geckodriver selenium tutorial
Vadnica za GeckoDriver Selenium: Naučite se uporabljati gonilnik Gecko (Marionette) v selenu
Da bi razumeli, kaj je GeckoDriver, moramo na začetku vedeti o Gecko in motorju spletnega brskalnika. Ta vadnica pokriva skoraj vse funkcije, povezane z GeckoDriver, in vam tako daje popoln pregled nad njim.
Za začetek najprej sporočite, kaj je Gecko in kaj je spletni brskalnik?
Kaj se boste naučili:
- Kaj je Gecko?
- Kaj je spletni brskalnik?
- Kaj je GeckoDriver?
- Zakaj selenium potrebuje GeckoDriver?
- Kako uporabiti GeckoDriver v projektu Selenium?
- GeckoDriver in TestNG
- Koraki za dodajanje poti v sistemsko spremenljivko PATH
- Težave brez gonilnika Gecko
- Dodatne informacije o GeckoDriver
- Zaključek
- Priporočeno branje
Kaj je Gecko?
Gecko je motor spletnega brskalnika. Obstaja več aplikacij, ki zahtevajo Gecko. Natančneje, aplikacije, ki jih razvijata Mozilla Foundation in Mozilla Corporation. Gecko je tudi potreba za številne odprtokodne programe. Gecko je napisan v jeziku C ++ in JavaScript.
Najnovejše različice so napisane tudi v Rustu. Gecko je brezplačen in odprtokodni motor spletnega brskalnika.
Kaj je spletni brskalnik?
Spletni brskalnik ni nič drugega kot programska oprema. Glavna funkcija tega programa je zbiranje vsebine (na primer HTML, XML, slike) in formatiranje informacij (na primer CSS) ter prikaz te formatirane vsebine na zaslonu. Spletni brskalnik se imenuje tudi Layout Engine ali Rendering Engine.
Aplikacije, kot so spletni brskalniki, e-poštni odjemalci, bralniki e-knjig, spletni sistemi za pomoč itd., Potrebujejo prikaz spletne vsebine. Za prikaz spletne vsebine je potreben motor spletnega brskalnika, ki je del vseh teh aplikacij. Za vsak spletni brskalnik obstajajo različni motorji spletnih brskalnikov.
Naslednja tabela prikazuje spletne brskalnike in katere motorje brskalnikov uporabljajo.
Gecko deluje v naslednjem operacijskem sistemu brez emulacije:
- Windows
- Mac OS
- Linux
- BSD
- Unix
Ne more se izvajati v OS Symbian.
Kaj je GeckoDriver?
GeckoDriver je povezovalna povezava do brskalnika Firefox za vašo skripte v seleniju . GeckoDriver je strežnik proxy, ki pomaga komunicirati z brskalniki, ki temeljijo na Gecko (npr. Firefox), za katerega zagotavlja HTTP API.
Zakaj selenium potrebuje GeckoDriver?
Firefox (različica 47 in novejša) ga je nekaj spremenil in iz nekaterih varnostnih razlogov nobenemu tretjemu gonilniku ne dovoljuje neposredne interakcije z brskalniki. Zato ne moremo uporabljati Selenium2 z najnovejšimi različicami Firefoxa. Torej potrebujemo selenium3.
Selenium3 ima Marionet Driver. Selenium3 lahko neposredno komunicira z brskalnikom Firefox s pomočjo strežnika proxy, ki ni nič drugega kot GeckoDriver.
Kako uporabiti GeckoDriver v projektu Selenium?
- Upoštevajte, da imate najnovejšo različico Selen WebDriver in brskalnik Firefox.
- Nato prenesite GeckoDriver iz tukaj . Kasneje izberite različico, ki je primerna za vaš računalnik.
- Razširi datoteke iz stisnjene mape
- V svoj projekt dodajte sklice na Selenium3 libs Z desno miškino tipko kliknite projekt => Zgradite pot => Konfigurirajte pot zgradbe => Knjižnice => Dodaj zunanje kozarce.
- Izberite Mapa Lib => Kliknite Clt + A => Kliknite Odpri .
- Za tabo kliknite odpri , boste videli naslednje okno:
- Nato kliknite V redu.
- Zdaj zapišite svojo kodo in z lastnostjo sistema določite pot GeckoDriver.
- V kodo dodajte spodnjo vrstico:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** [ Kako kopirati naslov izvlečene datoteke. - (Pritisnite 'Shift' na tipkovnici in z desno miškino tipko kliknite datoteko, dobili boste možnost. Nato 'Kopiraj naslov datoteke'.)]
** [ V tej kopiji prilepljene poti se prepričajte, da obstaja dvojna poševnica nazaj, sicer bo koda imela sintaksno napako.]
Vzemimo primer
Primer
Tu je le preprost skript, kjer v brskalniku Firefox odpremo Googlovo spletno stran in preverimo naslov spletne strani.
Koda1:
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); } }
Razumevanje kodeksa
# 1) import org.openqa.selenium.WebDriver- Tukaj uvozimo vse reference na vmesnik WebDriver. Kasneje je ta vmesnik WebDriver potreben za ustvarjanje novega brskalnika.
# 2) import org.openqa.selenium.firefox.FirefoxDriver- Tukaj uvozimo vse sklice na razred FirefoxDriver.
# 3) setProperty (ključ niza, vrednost niza) - Tu nastavljamo sistemsko lastnost z navedbo imena lastnosti, ki se imenuje Key, in njene poti, ki se imenuje Value.
Ključ -Ime sistemske lastnosti, tj. webdriver.gecko.driver .
Vrednost - Naslov exe datoteke Gecko Driver.
# 4) Gonilnik WebDriver = novi FirefoxDriver () - V tej vrstici kode ustvarjamo referenčno spremenljivko 'voznik' WebDriverja in ta referenčna spremenljivka se sproži z uporabo razreda FirefoxDriver. Profil Firefox brez razširitev in vtičnikov se bo zagnal s primerkom Firefox.
# 5) get (“URL”) - S to metodo Get lahko v brskalniku odpremo navedeni URL. Ta metoda Get se pokliče z uporabo referenčne spremenljivke WebDriver, tj. Gonilnika. Niz se posreduje metodi Get, kar pomeni, da se URL te aplikacije prenese v to metodo Get.
# 6) manage (). Window (). Maximize () - S to vrstico kode maksimiramo okno brskalnika. Takoj ko brskalnik odpre navedeni URL, je s to vrstico maksimiran.
# 7) getTitle () - S to vrstico kode bomo lahko našli naslov spletne strani. Ta metoda se imenuje tudi z uporabo referenčne spremenljivke WebDriver 'voznik'. Ta naslov shranjujemo v spremenljivko niza 'appTitle'.
# 8) Primerjava– Tu primerjamo appTitle (ki bo prišel skozi driver.getTitle () metoda) in expTitle (kar je »Google«) z uporabo stavka If. To je le preprosta izjava If-else. Ko je pogoj »Če« izpolnjen, tiskamo sporočilo »Preverjanje uspešno«, sicer pa tiskamo sporočilo »Preverjanje ni uspelo«.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Ta vrstica kode zapre brskalnik. Ta vrstica zapre samo trenutno okno.
# 10) System.exit (0) - Ta metoda vrstice kode se uporablja za zaključek zagnanega Java Virtual Machine. Zato je priporočljivo, da pred to vrstico zaprete vsa odprta okna ali datoteke.
GeckoDriver in TestNG
V kodi ni velike razlike, vendar tukaj dodajam kodo samo za vašo referenco.
PRIMER:
Premaknimo se na primer. Naš primer je odpreti spletno stran Google.com, dobiti njen naslov in jo natisniti.
Koda2:
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); } }
Točke, ki si jih morate zapomniti med pisanjem kode TestNG:
# 1) Uporabite metodo System.setProperty (String key, String value) v funkciji f (), enako kot v prejšnjem primeru. V tem primeru smo to zapisali v glavni funkciji. Vendar v TestNG ni glavnih () funkcij. Če jo napišete zunaj funkcije, boste dobili sintaksno napako.
#two) Druga najpomembnejša stvar, ki si jo je treba zapomniti, je System.exit (0). V vaš skript TestNG te vrstice kode ni treba dodajati. Za to obstaja en razlog - po zagonu skripta TestNG se ustvari izhodna mapa, kjer si lahko ogledate ustvarjena poročila in rezultat, če v skript dodate System.exit (0), ta mapa (izhodna mapa) ne bo dobila in poročil ne boste mogli videti.
Koraki za dodajanje poti v sistemsko spremenljivko PATH
- V sistemu Windows z desno miškino tipko kliknite Moj računalnik ali Ta računalnik.
- Izberite Lastnosti.
- Izberite napredne sistemske nastavitve.
- Kliknite gumb Spremenljivke okolja.
- Med sistemskimi spremenljivkami izberite PATH.
- Kliknite gumb Uredi.
- Kliknite gumb Novo
- Prilepite pot do datoteke GeckoDriver.
- Kliknite V redu.
Težave brez gonilnika Gecko
Morda se soočate z nekaterimi težavami, kot so spodaj navedena.
# 1) Če uporabljate staro različico Firefoxa in Selenium3, boste dobili naslednjo izjemo:
kako najti privzeto masko podomrežja
Izjema v niti »main« java.lang.IllegalStateException
#two) Če uporabljate najnovejšo različico Firefoxa in staro različico Selenium, boste dobili naslednjo izjemo:
org.openqa.selenium.firefox.NotConnectedException : Po 45000ms ni mogoče vzpostaviti povezave z gostiteljem 127.0.0.1 na vratih 7055
# 3) Če uporabljate najnovejšo različico Firefoxa in WebDriverja, ne pa tudi GeckoDriverja, boste dobili naslednjo izjemo:
Izjema v niti »main« java.lang.IllegalStateException: Pot do izvršljive datoteke gonilnika mora nastaviti sistemska lastnost webdriver.gecko.driver; za več informacij glejte tukaj .Najnovejšo različico lahko prenesete iz tukaj .
Dodatne informacije o GeckoDriver
Kot vemo, je GeckoDriver strežnik proxy, ki pomaga komunicirati z brskalniki, ki temeljijo na Gecko (npr. Firefox), za katerega zagotavlja HTTP API.
Ta HTTP API je mogoče razumeti s protokolom WebDriver. V protokolu WebDriver je nekaj vozlišč, ki vključujejo lokalni konec, oddaljeni konec, vozlišče vmesnika in vozlišče končne točke. Komunikacija med temi vozlišči je opisana v protokolu WebDriver.
Lokalni konec je odjemalska stran protokola WebDriver. Oddaljeni konec pomeni strežniško stran protokola WebDriver. Vozlišče Posrednik opravlja vlogo posrednika. Vozlišče končne točke uveljavi uporabniški agent ali podoben program.
Ukazi in odgovori, ki jih WebDriver pošlje GeckoDriverju, se pretvorijo v protokol Marionette, nato pa jih GeckoDriver prenese v gonilnik Marionette. Tako zaključujemo, da GeckoDriver deluje kot posrednik med tema dvema WebDriver in Marionette.
Marionet je razdeljen na 2 dela, to sta strežniški in odjemalski del. Ukaze, ki jih pošlje odjemalec, izvaja strežniški del.
To delo izvrševanja ukazov se izvaja znotraj brskalnika. Marionette ni nič drugega kot kombinacija komponente gecko (ki je strežnik Marionette) in zunanje komponente (ki se imenuje odjemalka Marionette). GeckoDriver je napisan v programskem jeziku Rust.
Zaključek
GeckoDriver je vmesni dejavnik med vašimi skripti Selenium in brskalniki, ki temeljijo na Gecko, kot je Firefox.
GeckoDriver je proxy za komunikacijo z brskalniki, ki temeljijo na Gecko ( Npr. Firefox). Firefox (različica47 in novejša) je naredil nekaj sprememb, zaradi česar ni bilo mogoče podpirati neodvisnih gonilnikov za neposredno interakcijo z brskalniki.
To je glavni razlog, zaradi katerega moramo uporabiti GeckoDriver. Najlažji način za uporabo GeckoDriverja v vašem skriptu je izvedba uporabe Lastnost System.set. [System.setProperty ('webdriver.gecko.driver', 'Pot do datoteke Gecko Driver')].
Ste novi GeckoDriver? Ste se danes v tem GeckoDriver Selenium naučili kaj novega? Ali pa imate o GeckoDriverju kaj zanimivega za deliti z nami? Vas prosimo, da svoje misli izrazite v spodnjem oddelku za komentarje.
Priporočeno branje
- Vadnica za kumare selena: Integracija kumar Java Selenium WebDriver
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8
- Vadnica za iskanje selena z besedilom s primeri
- Implementacija našega prvega skripta WebDriver - Vadnica # 10 za selenium WebDriver
- Kako ravnati z opozorili / pojavnimi okni v programu Selenium WebDriver - Vodič za selenij št. 16
- Celotna namestitev in namestitev WebDriverja z Eclipse - Vadnica za selen št. 9
- Vadnice za globinsko zasenčenje za začetnike
- Učinkoviti scenariji za skriptiranje in odpravljanje težav s selenijem - Vadnica za selenij št. 27