geckodriver selenium tutorial
GeckoDriver Selenium Tutorial: Lær hvordan du bruker Gecko (Marionette) Driver i Selen
For å forstå hva GeckoDriver er, må vi først vite om Gecko og nettlesermotoren. Denne opplæringen dekker nesten alle funksjonene som er involvert i GeckoDriver, og gir deg dermed en fullstendig oversikt over den.
Så til å begynne med, la oss først vite hva Gecko er og hva er en nettlesermotor?
Hva du vil lære:
- Hva er Gecko?
- Hva er en nettlesermotor?
- Hva er GeckoDriver?
- Hvorfor trenger Selen GeckoDriver?
- Hvordan bruke GeckoDriver i Selenium Project?
- GeckoDriver og TestNG
- Fremgangsmåte for å legge til en bane i Systemets PATH-miljøvariabel
- Problemer uten Gecko Driver
- Tilleggsinformasjon om GeckoDriver
- Konklusjon
- Anbefalt lesing
Hva er Gecko?
Gecko er en nettlesermotor. Det er flere applikasjoner som krever Gecko. Spesielt applikasjonene som er utviklet av Mozilla Foundation og Mozilla Corporation. Gecko er også et behov for mange programvarer med åpen kildekode. Gecko er skrevet i C ++ og JavaScript.
De siste versjonene er også skrevet i Rust. Gecko er en gratis nettlesermotor med åpen kildekode.
Hva er en nettlesermotor?
Web Browser Engine er ikke annet enn et program. Hovedfunksjonen til dette programmet er å samle innholdet (som HTML, XML, bilder) og formatere informasjonen (som CSS) og vise dette formaterte innholdet på skjermen. Nettlesermotor kalles også Layout Engine eller Rendering Engine.
Programmer som nettlesere, e-postklienter, e-boklesere, online hjelpesystemer osv. Trenger visning av nettinnhold. Og for å vise innholdet på nettet, er nettlesermotoren påkrevd, og det er en del av alle disse applikasjonene. Det er forskjellige nettlesermotorer for hver nettleser.
Tabellen nedenfor viser nettlesere og hvilke nettlesermotorer de bruker.
Gecko kjører på følgende operativsystem uten emulering:
- Windows
- Mac os
- Linux
- BSD
- Unix
Den kan ikke kjøres på et Symbian-operativsystem.
Hva er GeckoDriver?
GeckoDriver er en koblingskobling til Firefox-nettleseren for din manus i selen . GeckoDriver er en proxy som hjelper til å kommunisere med de Gecko-baserte nettleserne (f.eks. Firefox), som den gir HTTP API for.
Hvorfor trenger Selen GeckoDriver?
Firefox (versjon 47 og nyere) har gjort noen endringer i den, og av noen sikkerhetsmessige årsaker tillater den ingen tredjepartsdriver å samhandle direkte med nettleserne. Derfor kan vi ikke bruke Selenium2 med de nyeste versjonene av Firefox. Så vi trenger Selen3.
Selenium3 har Marionette Driver. Selenium3 kan samhandle direkte med Firefox-nettleseren ved hjelp av en proxy, som ikke er noe annet enn GeckoDriver.
Hvordan bruke GeckoDriver i Selenium Project?
- La oss vurdere at du har den nyeste versjonen av Selen WebDriver og Firefox-nettleseren.
- Last deretter ned GeckoDriver fra her . Senere velger du versjonen som passer for datamaskinen din.
- Pakke ut filer fra den komprimerte mappen
- Legg til referanser til Selenium3 libs i prosjektet ditt gjennom- Høyreklikk på prosjektet => Build Path => Configure Build Path => Libraries => Add External Jars.
- Å velge Lib-mappe => Klikk Clt + A => Klikk Åpne .
- Etter deg Klikk Åpne , vil du se følgende vindu:
- Klikk deretter OK.
- La oss nå skrive koden vår og bruke systemegenskapen til å spesifisere GeckoDriver-banen.
- Legg til linjen nedenfor i koden din:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Hvordan kopiere adressen til den utpakkede filen. - (Trykk på 'Skift' fra tastaturet og høyreklikk på filen, du får et alternativ. Deretter ‘Kopier adressen til filen’.))
** ( I denne kopierte limte banen må du sørge for at det er dobbelt tilbakeslag, ellers vil koden ha en syntaksfeil.)
La oss ta et eksempel
Eksempel
Her er bare et enkelt skript der vi åpner Googles webside i en Firefox-nettleser og verifiserer tittelen på websiden.
Kode1:
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); } }
Forstå koden
# 1) Importer org.openqa.selenium.WebDriver- Her importerer vi alle referansene til WebDriver-grensesnittet. Senere kreves dette WebDriver-grensesnittet for å starte en ny nettleser.
# 2) Importer org.openqa.selenium.firefox.FirefoxDriver- Her importerer vi alle referansene til FirefoxDriver-klassen.
# 3) setProperty (strengnøkkel, strengverdi) - Her setter vi systemegenskapen ved å oppgi navnet på eiendommen som kalles nøkkel og banen som kalles verdi.
Nøkkel -Navn på systemegenskapen, dvs. webdriver.gecko.driver .
Verdi - Adresse til Gecko Driver's exe-fil.
# 4) WebDriver-driver = ny FirefoxDriver () - I denne kodelinjen lager vi referansevariabelen 'driver' for WebDriver, og denne referansevariabelen startes ved hjelp av FirefoxDriver-klassen. En Firefox-profil uten utvidelser og plugins vil bli lansert med Firefox-forekomst.
# 5) få (“URL”) - Ved hjelp av denne Get-metoden kan vi åpne den angitte URL-en i nettleseren. Denne Get-metoden kalles ved hjelp av WebDrivers referansevariabel, dvs. driver. Strengen sendes til Get-metoden, som betyr at applikasjons-URL-en vår sendes til denne Get-metoden.
# 6) administrer (). Vindu (). Maksimere () - Ved å bruke denne kodelinjen maksimerer vi nettleservinduet. Så snart nettleseren åpner den angitte URL-en, maksimeres den ved hjelp av denne linjen.
# 7) getTitle () - Ved å bruke denne kodelinjen vil vi kunne finne tittelen på websiden. Denne metoden kalles også å bruke WebDrivers referansevariabel ‘driver’. Vi lagrer denne tittelen i strengvariabelen ‘appTitle’.
# 8) Sammenligning– Her sammenligner vi appTitle (som kommer gjennom driver.getTitle () metode) og expTitle (som er 'Google') ved hjelp av If-setningen. Det er bare en enkel If-else-uttalelse. Når 'Hvis' -tilstanden er oppfylt, skriver vi ut meldingen 'Bekreftelse vellykket', ellers er vi utskriftsmeldingen 'Bekreftelse mislyktes'.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Denne kodelinjen lukker nettleseren. Denne linjen lukker bare det nåværende vinduet.
# 10) System.exit (0) - Denne kodelinjemetoden brukes til å avslutte kjøring av Java Virtual Machine. Så det anbefales å lukke alle de åpne vinduene eller filene før denne linjen.
GeckoDriver og TestNG
Det er ikke så stor forskjell i koden, men her legger jeg til en kode bare for din referanse.
EKSEMPEL:
La oss gå til eksemplet. Eksempelet vårt er å åpne Google.com-nettsiden, få tittelen og skrive den ut.
Kode2:
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); } }
Poeng å huske når du skriver TestNG-kode:
#1) Bruk metoden System.setProperty (strengnøkkel, strengverdi) inne i funksjonen f () som det forrige eksemplet. I det eksemplet skrev vi det i hovedfunksjonen. I TestNG er det imidlertid ingen hovedfunksjoner (). Hvis du skriver det utenfor funksjonen, får du en syntaksfeil.
#to) Den nest viktigste tingen å huske er System.exit (0). Det er ikke nødvendig å legge til denne kodelinjen i TestNG-skriptet. Det er en grunn til det som er - etter å ha kjørt TestNG-skriptet, genereres utgangsmappen der du kan se de genererte rapportene og resultatet, hvis du legger til System.exit (0) i skriptet, får denne mappen (utdatamappen) generert, og du vil ikke kunne se rapportene.
Fremgangsmåte for å legge til en bane i Systemets PATH-miljøvariabel
- På Windows-systemet høyreklikker du på Min datamaskin eller Denne PCen.
- Velg Egenskaper.
- Velg avanserte systeminnstillinger.
- Klikk på knappen Miljøvariabler.
- Velg PATH fra systemvariabler.
- Klikk på Rediger-knappen.
- Klikk på Ny-knappen
- Lim inn banen til GeckoDriver-filen.
- Klikk OK.
Problemer uten Gecko Driver
Du kan møte noen problemer som de som er gitt nedenfor.
#1) Hvis du bruker en gammel versjon av Firefox og Selenium3, får du følgende unntak:
hvordan åpne bin filer Windows 10
Unntak i tråden 'hoved' java.lang.IllegalStateException
#to) Hvis du bruker den nyeste versjonen av Firefox og en gammel versjon av Selenium, får du følgende unntak:
org.openqa.selenium.firefox.NotConnectedException : Kan ikke koble til vert 127.0.0.1 på port 7055 etter 45000ms
# 3) Hvis du bruker den nyeste versjonen av Firefox og WebDriver, men ikke bruker GeckoDriver, får du følgende unntak:
Unntak i tråden “hoved” java.lang.IllegalStateException: Banen til driveren kjøres må angis av systemegenskapen webdriver.gecko.driver; for mer informasjon, se her .Den siste versjonen kan lastes ned fra her .
Tilleggsinformasjon om GeckoDriver
Som vi vet er GeckoDriver en proxy som hjelper til å kommunisere med Gecko-baserte nettlesere (f.eks. Firefox), som den gir HTTP API for.
Dette HTTP API kan forstås ved hjelp av WebDriver-protokollen. Det er noen noder i WebDriver-protokollen som inkluderer Local end, Remote end, Intermediary node og Endpoint node. Kommunikasjon mellom disse nodene er beskrevet i WebDriver-protokollen.
Den lokale enden er klientsiden til WebDriver-protokollen. Ekstern slutt betyr serversiden av WebDriver-protokollen. Mellomliggende node utfører rollen som en proxy. Endpoint node blir satt i kraft av en brukeragent eller et lignende program.
Kommandoer og svar sendt av WebDriver til GeckoDriver blir oversatt til Marionette Protocol og deretter overført til Marionette Driver av GeckoDriver. Så vi konkluderer med å si at GeckoDriver fungerer som en fullmektig mellom disse to WebDriver og Marionette.
Marionette er delt inn i 2 deler, som er serverdelen og klientdelen. Kommandoer som sendes av klientdelen utføres av serverdelen.
Dette kommandoutførelsesarbeidet utføres i nettleseren. Marionette er bare en kombinasjon av en gekko-komponent (som er en Marionette-server) og en ekstern komponent (som kalles Marionette Client). GeckoDriver er skrevet på Rust-programmeringsspråk.
Konklusjon
GeckoDriver er en mellomfaktor mellom dine Selenium-skript og Gecko-baserte nettlesere som Firefox.
GeckoDriver er en proxy for å kommunisere med Gecko-baserte nettlesere ( F.eks. Firefox). Firefox (versjon 47 og nyere) har gjort noen endringer, noe som har ført til forebygging av å støtte tredjepartsdrivere for å samhandle direkte med nettleserne.
Dette er den viktigste grunnen til at vi trenger å bruke GeckoDriver. Den enkleste måten å bruke GeckoDriver i skriptet ditt er å implementere bruken av System.set-egenskap. (System.setProperty (“webdriver.gecko.driver”, “Path of the Gecko Driver file”)).
Er du ny i GeckoDriver? Lærte du noe nytt i dag i dette GeckoDriver-selenet? Eller har du noe interessant å dele med oss om GeckoDriver? Uttrykke gjerne tankene dine i kommentarfeltet nedenfor.
Anbefalt lesing
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Introduksjon til Selen WebDriver - Selenium Tutorial # 8
- Selen Find Element By Text Tutorial med eksempler
- Implementering av vårt første WebDriver Script - Selenium WebDriver Tutorial # 10
- Hvordan håndtere varsler / popup-vinduer i Selen WebDriver - Selenium-veiledning nr. 16
- WebDriver Hele installasjonen og installasjonen med Eclipse - Selenium Tutorial # 9
- In-Depth Eclipse Tutorials For Beginners
- Effektiv Selen Scripting og feilsøking av scenarier - Selenium Tutorial # 27