geckodriver selenium tutorial
Vodič za GeckoDriver Selenium: Naučite kako koristiti Gecko (Marionette) pokretački program u selenu
Da bismo razumjeli što je GeckoDriver, u početku moramo znati o Geckou i mehanizmu web preglednika. Ovaj tutorial pokriva gotovo sve značajke uključene u GeckoDriver, pružajući vam tako cjelovit pregled nad njim.
Pa za početak, najprije nam recite što je Gecko i što je web preglednik?
Što ćete naučiti:
- Što je Gecko?
- Što je web preglednik?
- Što je GeckoDriver?
- Zašto je seleniju potreban GeckoDriver?
- Kako koristiti GeckoDriver u projektu Selenium?
- GeckoDriver i TestNG
- Koraci za dodavanje puta u varijablu okoliša PATH sustava
- Problemi bez upravljačkog programa Gecko
- Dodatne informacije o GeckoDriver
- Zaključak
- Preporučena literatura
Što je Gecko?
Gecko je motor web preglednika. Postoji nekoliko aplikacija za koje je potreban Gecko. Konkretno, aplikacije koje su razvile Mozilla Foundation i Mozilla Corporation. Gecko je također potreba za mnogim projektima otvorenog koda. Gecko je napisan na jeziku C ++ i JavaScript.
Najnovije verzije napisane su i na Rustu. Gecko je besplatni i otvoreni izvor web preglednika.
Što je web preglednik?
Web Browser Engine nije ništa drugo doli softverski program. Glavna funkcija ovog programa je prikupljanje sadržaja (poput HTML-a, XML-a, slika) i formatiranje podataka (poput CSS-a) i prikaz tog formatiranog sadržaja na ekranu. Mehanizam web preglednika naziva se i mehanizmom rasporeda ili mehanizmom za prikazivanje.
Aplikacije poput web preglednika, klijenata e-pošte, čitača e-knjiga, mrežnih sustava pomoći itd. Trebaju prikazivati web sadržaj. A za prikaz web sadržaja potreban je mehanizam web preglednika koji je dio svih tih aplikacija. Za svaki web preglednik postoje različiti mehanizmi web preglednika.
Sljedeća tablica prikazuje web preglednike i koje mehanizme web preglednika oni koriste.
Gecko radi na sljedećem operativnom sustavu bez emulacije:
- Windows
- Mac OS
- Linux
- BSD
- Unix
Ne može se izvoditi na OS Symbian.
Što je GeckoDriver?
GeckoDriver je poveznica na preglednik Firefox za vaš skripte u seleniju . GeckoDriver je proxy koji pomaže u komunikaciji s preglednicima temeljenim na Gecko (npr. Firefox), za koje pruža HTTP API.
Zašto je seleniju potreban GeckoDriver?
Firefox (verzija 47 i novija) na njemu je izvršio neke promjene, a iz sigurnosnih razloga ne dopušta nijednom upravljačkom programu treće strane izravnu interakciju s preglednicima. Stoga ne možemo koristiti Selenium2 s najnovijim verzijama Firefoxa. Dakle, trebamo Selenium3.
Selenium3 ima Marionet Driver. Selenium3 može izravno komunicirati s preglednikom Firefox pomoću proxyja, što je ništa drugo nego GeckoDriver.
Kako koristiti GeckoDriver u projektu Selenium?
- Uzmimo u obzir da imate najnoviju verziju Selen WebDriver i preglednik Firefox.
- Zatim preuzmite GeckoDriver sa ovdje . Kasnije odaberite verziju koja odgovara vašem računalu.
- Izdvoj datoteke iz komprimirane mape
- Dodajte reference Selenium3 libs u svoj projekt kroz- Desnom tipkom miša kliknite projekt => Put gradnje => Konfiguriranje puta gradnje => Knjižnice => Dodaj vanjske staklenke.
- Izaberi Mapa Lib => Kliknite Clt + A => Kliknite Otvori .
- Poslije tebe kliknite otvori , vidjet ćete sljedeći prozor:
- Zatim kliknite U redu.
- Sada napišite svoj kôd i upotrijebite sistemsko svojstvo da odredite put GeckoDriver.
- Dodajte sljedeći redak u svoj kod:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Kako kopirati adresu izvađene datoteke. - (Pritisnite tipku 'Shift' na tipkovnici i kliknite datoteku desnom tipkom miša, dobit ćete opciju. Zatim 'Kopiraj adresu datoteke'.))
** ( U ovoj kopiji zalijepljenoj stazi provjerite ima li dvostruku kosu crtu u suprotnom, kôd će inače imati sintaksnu pogrešku.)
Uzmimo primjer
Primjer
Evo samo jednostavne skripte u kojoj u pregledniku Firefox otvaramo Googleovu web stranicu i provjeravamo naslov web stranice.
Šifra1:
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); } }
Razumijevanje Kodeksa
# 1) import org.openqa.selenium.WebDriver- Ovdje uvozimo sve reference na sučelje WebDriver. Kasnije je ovo sučelje WebDriver potrebno za instanciju novog preglednika.
# 2) uvoz org.openqa.selenium.firefox.FirefoxDriver- Ovdje uvozimo sve reference na klasu FirefoxDriver.
# 3) setProperty (ključ niza, vrijednost niza) - Ovdje postavljamo svojstvo sustava davanjem imena svojstva koje se naziva Ključ i njegove staze koja se naziva Vrijednost.
Ključ -Naziv svojstva sustava tj. webdriver.gecko.driver .
Vrijednost - Adresa exe datoteke Gecko Driver.
# 4) Upravljački program WebDrivera = novi FirefoxDriver () - U ovom retku koda stvaramo referentnu varijablu ‘driver’ WebDrivera i ta se referentna varijabla pokreće pomoću klase FirefoxDriver. Firefox profil bez proširenja i dodataka pokrenut će se s instancom Firefox.
# 5) get ('URL') - Korištenjem ove metode Get možemo otvoriti navedeni URL u pregledniku. Ova metoda Get poziva se pomoću referentne varijable WebDriver, tj. Upravljačkog programa. Niz se prosljeđuje metodi Get, što znači da se URL naše aplikacije prenosi u ovu metodu Get.
# 6) manage (). Window (). Maximize () - Korištenjem ovog retka koda maksimiziramo prozor preglednika. Čim preglednik otvori navedeni URL, on se maksimizira pomoću ovog retka.
# 7) getTitle () - Korištenjem ovog retka koda moći ćemo pronaći naslov web stranice. Ova se metoda također naziva korištenjem WebDriverove referentne varijable ‘driver’. Spremamo ovaj naslov u string varijablu ‘appTitle’.
# 8) Usporedba– Ovdje uspoređujemo appTitle (koji će proći driver.getTitle () metoda) i expTitle (što je 'Google') pomoću naredbe If. To je samo jednostavna izjava If-else. Kada je zadovoljen uvjet 'Ako', ispisujemo poruku 'Potvrda uspješna', inače smo poruka 'Provjera nije uspjela'.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Ovaj redak koda zatvara preglednik. Ovaj redak zatvara samo trenutni prozor.
# 10) System.exit (0) - Metoda ovog retka koda koristi se za zaustavljanje pokretanja Java Virtual Machine. Stoga se preporučuje zatvoriti sve otvorene prozore ili datoteke prije ovog retka.
GeckoDriver i TestNG
Nema velike razlike u kodu, ali ovdje dodajem kod samo za vašu referencu.
PRIMJER:
Prijeđimo na primjer. Naš primjer je otvaranje web stranice Google.com, dobivanje naslova i ispis.
Šifra2:
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); } }
Bodovi koje treba upamtiti tijekom pisanja TestNG koda:
# 1) Upotrijebite metodu System.setProperty (ključ niza, vrijednost niza) unutar funkcije f () isto kao i prethodni primjer. U tom smo primjeru to napisali u glavnoj funkciji. Međutim, u TestNG-u ne postoje glavne () funkcije. Ako ga napišete izvan funkcije, dobit ćete sintaksnu pogrešku.
#dva) Druga najvažnija stvar koju treba zapamtiti je System.exit (0). Nema potrebe za dodavanjem ovog retka koda u vašu TestNG skriptu. Postoji jedan razlog za to što je - nakon pokretanja TestNG skripte generira se izlazna mapa u kojoj možete pregledati generirana izvješća i rezultat, ako u svoju skriptu dodate System.exit (0), ova mapa (izlazna mapa) neće generirani i nećete moći vidjeti izvješća.
Koraci za dodavanje puta u varijablu okoliša PATH sustava
- U sustavu Windows desnom tipkom miša kliknite Moje računalo ili Ovo računalo.
- Odaberite Svojstva.
- Odaberite napredne postavke sustava.
- Kliknite gumb Varijable okoline.
- Iz sistemskih varijabli odaberite PUT.
- Kliknite gumb Uredi.
- Pritisnite gumb New
- Zalijepite put datoteke GeckoDriver.
- Kliknite U redu.
Problemi bez upravljačkog programa Gecko
Možda ćete se suočiti s nekim problemima poput dolje navedenih.
# 1) Ako koristite staru verziju Firefoxa i Selenium3, dobit ćete sljedeću iznimku:
najkvalitetniji youtube u mp3 pretvarač
Iznimka u niti 'main' java.lang.IllegalStateException
#dva) Ako koristite najnoviju verziju Firefoxa i staru verziju Selenium, dobit ćete sljedeću iznimku:
org.openqa.selenium.firefox.NotConnectedException : Ne mogu se povezati s hostom 127.0.0.1 na portu 7055 nakon 45000ms
# 3) Ako koristite najnoviju verziju Firefoxa i WebDrivera, ali ne i GeckoDriver, dobit ćete sljedeću iznimku:
Iznimka u niti 'main' java.lang.IllegalStateException: Put do izvršne datoteke upravljačkog programa mora postaviti sistemsko svojstvo webdriver.gecko.driver; za više informacija pogledajte ovdje .Najnoviju verziju možete preuzeti s ovdje .
Dodatne informacije o GeckoDriver
Kao što znamo, GeckoDriver je proxy koji pomaže u komunikaciji s preglednicima temeljenim na Gecko (npr. Firefox), za koje pruža HTTP API.
Ovaj HTTP API može se razumjeti pomoću protokola WebDriver. Postoje neki čvorovi u protokolu WebDriver koji uključuju lokalni kraj, udaljeni kraj, čvor posrednika i čvor krajnje točke. Komunikacija između ovih čvorova opisana je u protokolu WebDriver.
Lokalni kraj je strana klijenta protokola WebDriver. Udaljeni kraj znači poslužiteljsku stranu protokola WebDriver. Čvor posrednika obavlja ulogu proxyja. Čvor krajnje točke na snagu aktivira korisnički agent ili sličan program.
Naredbe i odgovori koje WebDriver šalje GeckoDriveru prevode se na Marionette Protocol, a zatim ih GeckoDriver prenose na Marionette Driver. Stoga zaključujemo da GeckoDriver djeluje kao proxy između ova dva WebDrivera i Marionette.
Marionet je podijeljen u 2 dijela, a to su poslužiteljski i klijentski dio. Naredbe koje šalje klijentski dio izvršava se poslužiteljskim dijelom.
Ovo izvršavanje naredbi izvodi se u pregledniku. Marionette nije ništa drugo do kombinacija gecko komponente (koja je Marionet poslužitelj) i vanjske komponente (koja se naziva Marionet klijent). GeckoDriver napisan je na programskom jeziku Rust.
Zaključak
GeckoDriver je posredni faktor između vaših Selenium skripti i preglednika temeljenih na Geckou, poput Firefoxa.
GeckoDriver je proxy za komunikaciju s preglednicima zasnovanima na Gecko ( Npr. Firefox). Firefox (verzija47 i novija) napravio je neke promjene, što je dovelo do sprječavanja podrške upravljačkim programima trećih strana za izravnu interakciju s preglednicima.
To je primarni razlog zbog kojeg trebamo koristiti GeckoDriver. Najlakši način za upotrebu GeckoDrivera u skripti je implementacija upotrebe Svojstvo System.set. (System.setProperty („webdriver.gecko.driver“, „Put do datoteke Gecko Driver“)).
Jeste li novi u GeckoDriveru? Jeste li danas naučili nešto novo u ovom GeckoDriver Selenium? Ili imate nešto zanimljivo za podijeliti s nama o GeckoDriveru? Slobodno iznesite svoje misli u odjeljku za komentare u nastavku.
Preporučena literatura
- Vodič za krastavac selenij: Integracija Java Selenium WebDriver krastavaca
- Uvod u Selenium WebDriver - Vodič za selen br. 8
- Selen Pronađi element pomoću udžbenika teksta s primjerima
- Implementacija naše prve skripte WebDriver - Vodič br. 10 za Selenium WebDriver
- Kako postupati s upozorenjima / skočnim prozorima u programu Selenium WebDriver - Vodič za selenij br. 16
- Cjelokupno postavljanje i instaliranje WebDriver-a s Eclipseom - Vodič za selen br. 9
- Dubinski vodiči za pomračenje za početnike
- Učinkoviti scenariji za skriptiranje i rješavanje problema sa selenijem - Vodič za selenij br. 27