Co to jest sterownik Gecko?
Termin Gecko oznacza silnik przeglądarki internetowej, który jest wbudowany w przeglądarkę Mozilla Firefox. Sterownik Gecko działa jako proxy między klientami obsługującymi sterownik sieciowy (Eclipse, Netbeans itp.) A przeglądarką Mozilla Firefox. Krótko mówiąc, sterownik Gecko działa jako łącze między testami Selenium Web Driver a przeglądarką Mozilla Firefox.
Przed Selenium 3 przeglądarka Mozilla Firefox była domyślną przeglądarką Selenium. Po Selenium 3 testerzy muszą bezpośrednio zainicjować skrypt, aby używać Firefoksa przy użyciu GeckoDriver. Selenium używa protokołu W3C Webdriver do wysyłania żądań do GeckoDriver, który tłumaczy je na protokół o nazwie Marionette. Firefox zrozumie polecenia przesłane w postaci protokołu Marionette i wykona je.
Zalety korzystania z Gecko Driver
Selenium Webdriver w wersji 2.53 nie jest kompatybilny z Mozilla Firefox w wersji 47.0+. Sterownik Firefox używany we wcześniejszych wersjach Mozilla Firefox zostanie wycofany i będzie używana tylko implementacja GeckoDriver. Dlatego testerzy są zmuszeni do korzystania z GeckoDriver, jeśli chcą uruchamiać testy automatyczne w przeglądarce Mozilla Firefox w wersji 47.0+. Ale najważniejsze pytanie - jaka jest korzyść?
Główną zaletą korzystania z GeckoDriver w przeciwieństwie do domyślnego sterownika Firefoksa jest kompatybilność . GeckoDriver używa protokołu W3C WebDriver do komunikacji z Selenium. W3C to uniwersalnie zdefiniowany standard sterownika sieciowego. Oznacza to, że programiści Selenium (osoby, które kodują bazę Selenium) nie muszą tworzyć nowej wersji sterownika sieciowego dla każdej wersji przeglądarki. Ten sam sterownik sieciowy może być używany w wielu wersjach przeglądarek. Dlatego GeckoDriver jest preferowany w porównaniu do wcześniejszej implementacji sterownika Firefox.
Pobierz i zainstaluj sterownik Gecko:
Sterownik Gecko jest dostępny jako plik wykonywalny, który można pobrać do systemu. Poniżej znajduje się lista kroków, aby pobrać sterownik gecko.
Krok 1) Na tej stronie https://github.com/mozilla/geckodriver/releases, wybierz odpowiednią wersję do pobrania GeckoDriver w oparciu o Twój system operacyjny
Krok 2) Po zakończeniu pobierania pliku ZIP wyodrębnij zawartość pliku ZIP do folderu plików
Krok 3) Zanotuj lokalizację, w której rozpakowałeś sterownik. Lokalizacja zostanie później wykorzystana do utworzenia wystąpienia sterownika.
Sposoby inicjalizacji GeckoDriver:
Istnieją trzy różne sposoby inicjalizacji GeckoDriver.
1. Korzystanie z DesiredCapabilities:
Najpierw ustaw właściwość systemową dla sterownika Gecko.
Składnia:
System.setProperty ("webdriver.gecko.driver", "Ścieżka do pliku geckdriver.exe");
Przykład:
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Następnie ustaw pożądane możliwości.
Pożądane możliwości pomagają Selenium zrozumieć nazwę przeglądarki, wersję i system operacyjny w celu wykonania automatycznych testów. Poniżej znajduje się kod do ustawiania sterownika gecko przy użyciu klasy DesiredCapabilities.
Możliwości DesiredCapabilities = DesiredCapabilities.firefox ();możliwości.setCapability ("marionetka", prawda);
Oto pełny kod
System.setProperty ("webdriver.gecko.driver", driverPath);Możliwości DesiredCapabilities = DesiredCapabilities.firefox ();możliwości.setCapability ("marionetka", prawda);driver = nowy FirefoxDriver (możliwości);
2. Korzystanie z własności marionetki:
Sterownik Gecko można również zainicjować przy użyciu właściwości marionette, jak poniżej
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Jeśli sterownik gecko został zainicjowany przy użyciu powyższej metody, kod żądanych możliwości nie jest wymagany.
3. Korzystanie z FirefoxOptions:
Mozilla Firefox w wersji 47+ ma sterownik marionette jako starszy system. Korzystając z tego, sterownik marionette można wywołać za pomocą opcji Firefoksa, jak poniżej
Opcje FirefoxOptions = nowe FirefoxOptions ();options.setLegacy (true);
Kod do uruchomienia firefoxa przy użyciu sterownika Gecko:
pakiet com.guru99.demo;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.remote.DesiredCapabilities;klasa publiczna GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";publiczny sterownik WebDriver;@Przedpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Możliwości DesiredCapabilities = DesiredCapabilities.firefox ();możliwości.setCapability ("marionetka", prawda);driver = nowy FirefoxDriver (możliwości);}@Testpublic void navigateToUrl () {driver.get („http://demo.guru99.com/selenium/guru99home/”);}@Popublic void endTest () {driver.quit ();}}
Objaśnienie kodu:
@Before metoda:
Początkowo musimy ustawić właściwość systemową sterownika gecko na lokalizację pobierania pliku geckdriver.exe. Musimy ustawić właściwość marionette na true, aby Selenium używał protokołu Marionette do komunikacji ze sterownikiem Gecko. Na koniec musimy uruchomić instancję przeglądarki Firefox przy użyciu obiektu dla pożądanych możliwości.
Poniższe stwierdzenia pomagają w realizacji powyższego zadania.
System.setProperty ("webdriver.gecko.driver", driverPath);Możliwości DesiredCapabilities = DesiredCapabilities.firefox ();możliwości.setCapability ("marionetka", prawda);driver = nowy FirefoxDriver (możliwości);
@Metoda badania:
Przechodzimy do adresu URL określonego przez użytkownika za pomocą wbudowanej metody „get” dostarczanej przez sterownik sieciowy Selenium. Poniższe stwierdzenie pomoże osiągnąć to samo.
driver.get („http://demo.guru99.com/selenium/guru99home/”);
Metoda @After:
Na koniec zamykamy instancję przeglądarki za pomocą metody quit.
driver.quit ();
Zmodyfikuj skrypt dla nie-Gecko na Gecko:
Skrypt nie-gecko używany przed Selenium 3 był prosty. Musimy utworzyć instancję sterownika Firefoksa i użyć zmiennej instancji.
@Przedpublic void startBrowser () {driver = nowy FirefoxDriver ();}
Aby przekonwertować na gecko, wystarczy dodać jedną linię kodu
@Przedpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");driver = nowy FirefoxDriver ();}
Typowe wyjątki wystąpiły podczas korzystania ze sterownika Gecko:
Poniżej znajduje się lista typowych wyjątków, które występują podczas korzystania ze sterownika Gecko i przy rozdzielczości.
1. Ścieżkę do pliku wykonywalnego sterownika należy ustawić we właściwości systemowej webdriver.gecko.driver:
Ten wyjątek występuje, gdy użytkownik próbuje utworzyć wystąpienie sterownika Firefox bez ustawiania właściwości systemowej sterownika gecko. Zwykle robią to początkujący w Selenium, którzy nie są świadomi zmian wprowadzonych z Selenium 3 do poprzednich wersji Selenium.
Rozwiązaniem dla powyższego wyjątku jest ustawienie właściwości systemowej dla sterownika gecko z lokalizacją pliku geckodriver.exe, jak poniżej
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ geckodriver.exe");
Należy pamiętać, że przed utworzeniem instancji sterownika Mozilla Firefox należy ustawić właściwość sterownika gecko.
2. Wyjątek braku połączenia z przeglądarką Firefox:
org.openqa.selenium.firefox.NotConnectedException: nie można połączyć się z hostem 127.0.0.1 na porcie 7055 po 45000 ms.
Ten wyjątek zwykle występuje, gdy wersja przeglądarki Firefox została zaktualizowana do najnowszej wersji. Rozwiązaniem tego wyjątku jest zaktualizowanie pliku jar selenu i sterownika gecko do najnowszej wersji i użycie tego samego.
3. Wyjątek „Nie utworzono sesji”:
org.openqa.selenium.SessionNotCreatedException: nie można utworzyć nowej sesji zdalnej.
Ten wyjątek występuje z powodu problemów ze zgodnością między sterownikiem Selenium i Gecko. Sterownik Gecko działa z przeglądarką Firefox w wersji 47 lub nowszej. Można to rozwiązać, aktualizując wersję Firefoksa do wersji 47 lub nowszej.
4. Wyjątek dotyczący odmowy połączenia:
Wyjątek WebDriver: odmowa połączenia
Ten wyjątek to komunikat generowany, gdy sterownik sieciowy nie może nawiązać połączenia z przeglądarką Firefox. Można go rozwiązać za pomocą jednej z następujących technik.
- Użyj metody driver.quit (), aby zniszczyć wcześniejsze wystąpienia sterownika sieciowego
- Wyczyść pamięć podręczną przeglądarki przed wykonaniem testów automatycznych
- Wyczyść obszar roboczy projektu w środowisku Eclipse IDE
- Zawsze używaj najnowszej wersji sterownika selenium gecko i najnowszej wersji przeglądarki Firefox