geckodriver selenium tutorial
Samouczek GeckoDriver Selenium: Dowiedz się, jak używać sterownika Gecko (marionetka) w selenie
Aby zrozumieć, czym jest GeckoDriver, musimy najpierw wiedzieć o Gecko i silniku przeglądarki internetowej. Ten samouczek obejmuje prawie wszystkie funkcje związane z GeckoDriver, dając tym samym pełny przegląd tego.
Na początek daj nam najpierw znać, czym jest Gecko i czym jest silnik przeglądarki internetowej?
Czego się nauczysz:
- Co to jest Gecko?
- Co to jest mechanizm przeglądarki internetowej?
- Co to jest GeckoDriver?
- Dlaczego Selenium potrzebuje GeckoDriver?
- Jak korzystać z GeckoDriver w Selenium Project?
- GeckoDriver i TestNG
- Kroki, aby dodać ścieżkę do zmiennej środowiskowej PATH systemu
- Problemy bez sterownika Gecko
- Dodatkowe informacje o GeckoDriver
- Wniosek
- rekomendowane lektury
Co to jest Gecko?
Gecko to silnik przeglądarki internetowej. Istnieje kilka aplikacji, które wymagają Gecko. W szczególności aplikacje opracowane przez Mozilla Foundation i Mozilla Corporation. Gecko jest również potrzebne w wielu projektach oprogramowania open source. Gecko jest napisane w C ++ i JavaScript.
Najnowsze wersje są również napisane w języku Rust. Gecko to darmowy silnik przeglądarki internetowej typu open source.
Co to jest mechanizm przeglądarki internetowej?
Silnik przeglądarki internetowej to nic innego jak program. Główną funkcją tego programu jest zbieranie treści (np. HTML, XML, obrazy) i formatowanie informacji (np. CSS) oraz wyświetlanie sformatowanej zawartości na ekranie. Silnik przeglądarki internetowej jest również nazywany mechanizmem układu lub mechanizmem renderowania.
Aplikacje takie jak przeglądarki internetowe, klienty poczty elektronicznej, czytniki e-booków, systemy pomocy on-line itp. Wymagają wyświetlania treści internetowych. Do wyświetlania treści internetowych wymagany jest mechanizm przeglądarki internetowej, który jest częścią wszystkich tych aplikacji. Istnieją różne silniki przeglądarki internetowej dla każdej przeglądarki internetowej.
W poniższej tabeli przedstawiono przeglądarki internetowe i używane przez nie silniki przeglądarek internetowych.
Gecko działa na następującym systemie operacyjnym bez emulacji:
- Windows
- System operacyjny Mac
- Linux
- BSD
- Unix
Nie może działać w systemie operacyjnym Symbian.
Co to jest GeckoDriver?
GeckoDriver to łącze łączące z przeglądarką Firefox dla Twojego skrypty w Selenium . GeckoDriver to proxy, które pomaga komunikować się z przeglądarkami opartymi na Gecko (np. Firefox), dla których zapewnia HTTP API.
Dlaczego Selenium potrzebuje GeckoDriver?
Firefox (wersja 47 i nowsze) wprowadził w niej pewne zmiany i ze względów bezpieczeństwa nie zezwala żadnemu sterownikowi innej firmy na bezpośrednią interakcję z przeglądarkami. Dlatego nie możemy używać Selenium2 z najnowszymi wersjami przeglądarki Firefox. Więc potrzebujemy Selenium3.
Selenium3 ma Marionette Driver. Selenium3 może bezpośrednio współdziałać z przeglądarką Firefox za pomocą serwera proxy, który jest niczym innym jak GeckoDriver.
Jak korzystać z GeckoDriver w Selenium Project?
- Rozważmy, że masz najnowszą wersję Selenium WebDriver i przeglądarkę Firefox.
- Następnie pobierz GeckoDriver z tutaj . Później wybierz wersję odpowiednią dla Twojego komputera.
- Rozpakuj pliki z folderu skompresowanego
- Dodaj odniesienia do bibliotek Selenium3 w swoim projekcie poprzez: Kliknij prawym przyciskiem myszy projekt => Buduj ścieżkę => Konfiguruj ścieżkę budowania => Biblioteki => Dodaj zewnętrzne Jary.
- Wybierz Folder Lib => Kliknij Clt + A => Kliknij Otwórz .
- Po tobie kliknij otwórz zobaczysz następujące okno:
- Następnie kliknij OK.
- Napiszmy teraz nasz kod i użyj właściwości systemowej, aby określić ścieżkę GeckoDriver.
- Dodaj poniższą linię do swojego kodu:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** [ Jak skopiować adres wyodrębnionego pliku. - (Naciśnij klawisz „Shift” na klawiaturze i kliknij plik prawym przyciskiem myszy, pojawi się opcja. Następnie „Skopiuj adres pliku”.)]
** [ W tej kopii wklejonej ścieżki upewnij się, że występuje podwójny ukośnik odwrotny, w przeciwnym razie kod będzie miał błąd składni.]
Weźmy przykład
Przykład
Oto prosty skrypt, w którym otwieramy stronę Google w przeglądarce Firefox i weryfikujemy tytuł strony.
Kod1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String[] args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Zrozumienie Kodeksu
# 1) import org.openqa.selenium.WebDriver- Tutaj importujemy wszystkie odniesienia do interfejsu WebDriver. Później ten interfejs WebDriver jest wymagany do utworzenia wystąpienia nowej przeglądarki.
# 2) import org.openqa.selenium.firefox.FirefoxDriver- Tutaj importujemy wszystkie odwołania do klasy FirefoxDriver.
# 3) setProperty (klucz String, wartość ciągu) - Tutaj ustawiamy właściwość systemową, podając nazwę właściwości, która jest nazywana kluczem, i jej ścieżkę, która jest nazywana wartością.
Klucz -Nazwa właściwości systemu tj. webdriver.gecko.driver .
Wartość - Adres pliku exe Gecko Driver.
# 4) Sterownik WebDriver = nowy FirefoxDriver () - W tym wierszu kodu tworzymy zmienną referencyjną „driver” WebDriver i ta zmienna referencyjna jest inicjowana za pomocą klasy FirefoxDriver. Profil Firefoksa bez rozszerzeń i wtyczek zostanie uruchomiony z instancją przeglądarki Firefox.
# 5) get („URL”) - Za pomocą tej metody Get możemy otworzyć określony adres URL w przeglądarce. Ta metoda Get jest wywoływana przy użyciu zmiennej odniesienia WebDriver, tj. Sterownika. Ciąg jest przekazywany do metody Get, co oznacza, że adres URL naszej aplikacji jest przekazywany do tej metody Get.
# 6) manage (). Window (). Maximize () - Używając tej linii kodu, maksymalizujemy okno przeglądarki. Gdy tylko przeglądarka otworzy określony adres URL, jest on maksymalizowany za pomocą tej linii.
# 7) getTitle () - Korzystając z tej linii kodu będziemy mogli znaleźć tytuł strony internetowej. Ta metoda jest również wywoływana przy użyciu zmiennej odniesienia WebDriver „driver”. Zapisujemy ten tytuł w zmiennej String „appTitle”.
# 8) Porównanie– Tutaj porównujemy appTitle (który przejdzie przez driver.getTitle () metoda) i expTitle (czyli „Google”) za pomocą instrukcji If. To jest po prostu prosta instrukcja If-else. Gdy warunek „Jeśli” jest spełniony, drukujemy komunikat „Weryfikacja powiodła się”, w przeciwnym razie drukujemy komunikat „Weryfikacja nie powiodła się”.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Ta linia kodu zamyka przeglądarkę. Ta linia zamyka tylko bieżące okno.
# 10) System.exit (0) - Ta metoda wiersza kodu służy do zakończenia działania wirtualnej maszyny języka Java. Dlatego zaleca się zamknięcie wszystkich otwartych okien lub plików przed tą linią.
GeckoDriver i TestNG
Nie ma dużej różnicy w kodzie, ale tutaj dodaję kod tylko w celach informacyjnych.
PRZYKŁAD:
Przejdźmy do przykładu. Nasz przykład to otwarcie strony internetowej Google.com, pobranie jej tytułu i wydrukowanie.
Kod2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
O czym należy pamiętać pisząc kod TestNG:
# 1) Użyj metody System.setProperty (klucz ciągu, wartość ciągu) wewnątrz funkcji f (), tak samo jak w poprzednim przykładzie. W tym przykładzie napisaliśmy go w funkcji main. Jednak w TestNG nie ma funkcji main (). Jeśli wpiszesz go poza funkcją, otrzymasz błąd składniowy.
#dwa) Drugą najważniejszą rzeczą do zapamiętania jest System.exit (0). Nie ma potrzeby dodawania tej linii kodu do skryptu TestNG. Jest jeden powód: po uruchomieniu skryptu TestNG generowany jest folder wyjściowy, w którym można przeglądać wygenerowane raporty i wyniki, jeśli dodasz System.exit (0) do skryptu, ten folder (folder wyjściowy) nie otrzyma wygenerowane i nie będziesz mógł przeglądać raportów.
Kroki, aby dodać ścieżkę do zmiennej środowiskowej PATH systemu
- W systemie Windows kliknij prawym przyciskiem myszy Mój komputer lub Ten komputer.
- Wybierz Właściwości.
- Wybierz zaawansowane ustawienia systemu.
- Kliknij przycisk Zmienne środowiskowe.
- W zmiennych systemowych wybierz PATH.
- Kliknij przycisk Edytuj.
- Kliknij przycisk Nowy
- Wklej ścieżkę do pliku GeckoDriver.
- Kliknij OK.
Problemy bez sterownika Gecko
Możesz napotkać pewne problemy, takie jak te podane poniżej.
# 1) Jeśli używasz starej wersji przeglądarki Firefox i Selenium3, pojawi się następujący wyjątek:
podstawowe pytania do wywiadów SQL dla testerów
Wyjątek w wątku „main” java.lang.IllegalStateException
#dwa) Jeśli używasz najnowszej wersji Firefoksa i starej wersji Selenium, otrzymasz następujący wyjątek:
org.openqa.selenium.firefox.NotConnectedException : Nie można połączyć się z hostem 127.0.0.1 na porcie 7055 po 45000 ms
# 3) Jeśli używasz najnowszej wersji przeglądarki Firefox i WebDriver, ale nie używasz GeckoDriver, otrzymasz następujący wyjątek:
Wyjątek w wątku „main” java.lang.IllegalStateException: ścieżka do pliku wykonywalnego sterownika musi być ustawiona we właściwości systemowej webdriver.gecko.driver; aby uzyskać więcej informacji, zobacz tutaj .Najnowszą wersję można pobrać z witryny tutaj .
Dodatkowe informacje o GeckoDriver
Jak wiemy, GeckoDriver to proxy, które pomaga komunikować się z przeglądarkami opartymi na Gecko (np. Firefox), dla których zapewnia HTTP API.
Ten interfejs API HTTP można zrozumieć za pomocą protokołu WebDriver. Istnieją pewne węzły w protokole WebDriver, które obejmują lokalny koniec, zdalny koniec, węzeł pośredniczący i węzeł końcowy. Komunikacja między tymi węzłami jest opisana w protokole WebDriver.
Lokalny koniec to strona klienta protokołu WebDriver. Zdalny koniec oznacza stronę serwera protokołu WebDriver. Węzeł pośredniczący pełni rolę proxy. Węzeł punktu końcowego jest uruchamiany przez agenta użytkownika lub podobny program.
Polecenia i odpowiedzi wysyłane przez WebDriver do GeckoDriver są tłumaczone na protokół Marionette, a następnie przesyłane do Marionette Driver przez GeckoDriver. Podsumowując, stwierdzamy, że GeckoDriver działa jako proxy między tymi dwoma WebDriver i Marionette.
Marionetka jest podzielona na 2 części, czyli część serwerową i część kliencką. Polecenia wysyłane przez część klienta są wykonywane przez część serwerową.
Ta praca wykonywania poleceń jest wykonywana w przeglądarce. Marionetka to nic innego jak połączenie komponentu gekona (który jest serwerem Marionette) i komponentu zewnętrznego (nazywanego klientem Marionette). GeckoDriver jest napisany w języku programowania Rust.
Wniosek
GeckoDriver jest pośrednikiem między twoimi skryptami Selenium a przeglądarkami opartymi na Gecko, takimi jak Firefox.
GeckoDriver to proxy do komunikacji z przeglądarkami opartymi na Gecko ( Na przykład. Firefox). Firefox (wersja 47 i nowsze) wprowadził pewne zmiany, które uniemożliwiły bezpośrednie współdziałanie sterowników innych firm z przeglądarkami.
To jest główny powód, dla którego musimy używać GeckoDriver. Najłatwiejszym sposobem użycia GeckoDriver w twoim skrypcie jest zaimplementowanie użycia Właściwość System.set. [System.setProperty („webdriver.gecko.driver”, „Ścieżka pliku sterownika Gecko”)].
Czy jesteś nowy w GeckoDriver? Czy nauczyłeś się dziś czegoś nowego w tym GeckoDriver Selenium? A może chcesz się z nami podzielić czymś ciekawym na temat GeckoDriver? Zapraszam do wyrażenia swoich przemyśleń w sekcji komentarzy poniżej.
rekomendowane lektury
- Cucumber Selenium Tutorial: Cucumber Java Selenium Integracja WebDriver
- Wprowadzenie do Selenium WebDriver - samouczek Selenium # 8
- Selenium Find Element By Text Samouczek z przykładami
- Wdrożenie naszego pierwszego skryptu WebDriver - Selenium WebDriver Tutorial # 10
- Jak radzić sobie z alertami / wyskakującymi okienkami w Selenium WebDriver - Samouczek Selenium nr 16
- WebDriver Cała konfiguracja i instalacja z Eclipse - samouczek Selenium # 9
- Dogłębne samouczki dotyczące Eclipse dla początkujących
- Efektywne skrypty Selenium i scenariusze rozwiązywania problemów - samouczek Selenium nr 27