niedziela, 21 listopada 2010

Siećkierowcy tempomatu ustawianie

Sława!
Ostatnimi czasy zajęć wszelakich namnożyło mi się niczym zajęcy na wiosnę, więc i dzienniczek zaniedbany troszeczkę został. Na szczęście Jego, Szanownych Czytelników oraz osoby autora skromnej jedno z nich sposobność do wpisu świeżego uczyniło. Otóż okazji w tym okresie szalonym do obcowania ze świeżymi wersjami rozwojowymi Selenium 2 i WebDriver mam, aż za nadto. A oseski te, jak to oseski cierpią katusze chorób okresu dziecięcego w ilościach, że niejedna orda Tatarzynów Dzikie Pola pustosząca drobną hulajpartią się wydawać może.
Choroby te, jak to choroby, dzielą się na mniej lub bardziej poważne, i mniej lub bardziej uciążliwe. Jedną z bardziej irytujących, niczym komar bzyczący radośnie nad łożem w noc letnią, jest dość lekceważący i szacunku nieokazujący stosunek implementacyj interfejsu WebDriver do ustawień szparkości wykonania (poprzez wyliczenie Speed).
Los jednakże łaskawym się dla Nas okazał, aboim medykament objawy dolegliwości tej abszytować pozwoli Selenium Autorzy dostarczyć raczyli. Dokumenta przeglądając okiem bystrym wzrok nasz łatwo odnajdują interfejskik nasłuchowy nieduży, acz sprytny, miano WebDriverEventListener noszący, wraz z adapterem wyszykowanym znanym jako AbstractWebDriverEventListener. Zaimplementujmy więc exemplum szybkie, funkcjonalność Naszą zachcianą dostarczające:
package com.blogspot.pacykarz;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.AbstractWebDriverEventListener;
import java.util.concurrent.TimeUnit;

public class TempomatizedWebDriverListener extends AbstractWebDriverEventListener {

    private static final long INTERVAL = 200L;

    @Override
    public void afterNavigateTo(final String url,final  WebDriver driver) {
    try {
            TimeUnit.MILLISECONDS.sleep(INTERVAL);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
    }

   @Override
   public void afterNavigateBack(final WebDriver driver) {
        try {
            TimeUnit.MILLISECONDS.sleep(INTERVAL);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
   }

   @Override
   public void afterNavigateForward(final WebDriver driver) {
        try {
            TimeUnit.MILLISECONDS.sleep(INTERVAL);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
   }

   @Override
   public void afterFindBy(final By by, final WebElement element, final WebDriver driver) {
        try {
            TimeUnit.MILLISECONDS.sleep(INTERVAL);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
   }

   @Override
   public void afterClickOn(final WebElement element, final WebDriver driver) {
        try {
            TimeUnit.MILLISECONDS.sleep(INTERVAL);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
   }

   @Override
   public void afterChangeValueOf(final WebElement element, final WebDriver driver) {
        try {
            TimeUnit.MILLISECONDS.sleep(INTERVAL);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
   }

   @Override
   public void afterScript(final String script, final WebDriver driver) {
        try {
            TimeUnit.MILLISECONDS.sleep(INTERVAL);
        } catch (final InterruptedException e) {
            e.printStackTrace();
        }
   }
}
Krokiem następnym zaś winno być nasłuchiwacza tak stworzonego zarejestrowanie w miejscu odpowiednim. Miejscem tym jest specjalna wersja WebDriver zwana EventFiringWebDriver, któraż to bestyja sprytna udekoruje nam wcześniej istniejącego kierowcę w zdarzeń obsługę:
final WebDriver firefoxDriver = new FirefoxDriver();
final EventFiringWebDriver eventFiringWebDriver = new EventFiringWebDriver(firefoxDriver);
final WebDriverEventListener tempomatizedWebDriverListener = new TempomatizedWebDriverListener();
eventFiringWebDriver.register(tempomatizedWebDriverListener);
Od tego momentu operacje różniste na EventFiringWebDriver wykonując, mieć będziemy interwały przez nas regulujące szybkość działania ustalone. Ino na uwadze mieć należy, że kodu naszego partia drobna może wymagać retuszów i korekcyj nikłych, z tego względu, iż klasę implementującą WebDriver zmienić raczyliśmi (ale od czego metoda getWrappedDriver()?).

Brak komentarzy:

Prześlij komentarz