geckodriver selenium tutorial
GeckoDriver Selen Tutorial: Lær hvordan du bruger Gecko (Marionette) Driver i Selen
For at forstå hvad GeckoDriver er, skal vi i første omgang vide om Gecko og webbrowser-motoren. Denne tutorial dækker næsten alle de funktioner, der er involveret i GeckoDriver, hvilket giver dig et komplet overblik over det.
Så lad os først vide, hvad Gecko er, og hvad er en webbrowser-motor?
Hvad du lærer:
- Hvad er Gecko?
- Hvad er en webbrowser-motor?
- Hvad er GeckoDriver?
- Hvorfor har Selen brug for GeckoDriver?
- Hvordan bruges GeckoDriver i Selenium Project?
- GeckoDriver og TestNG
- Trin til at tilføje en sti i Systemets PATH-miljøvariabel
- Problemer uden Gecko Driver
- Supplerende oplysninger om GeckoDriver
- Konklusion
- Anbefalet læsning
Hvad er Gecko?
Gecko er en webbrowser-motor. Der er flere applikationer, der kræver Gecko. Specifikt de applikationer, der er udviklet af Mozilla Foundation og Mozilla Corporation. Gecko er også et behov for mange open source softwareprojekter. Gecko er skrevet i C ++ og JavaScript.
De nyeste versioner er også skrevet i Rust. Gecko er en gratis og en open source-webbrowser-motor.
Hvad er en webbrowser-motor?
Webbrowser Engine er intet andet end et softwareprogram. Programmets hovedfunktion er at indsamle indholdet (som HTML, XML, billeder) & formatering af oplysningerne (som CSS) og vise dette formaterede indhold på skærmen. Webbrowser Engine kaldes også Layout Engine eller Rendering Engine.
Programmer som webbrowsere, e-mail-klienter, e-boglæsere, online hjælpesystemer osv. Skal vises af webindhold. Og for at vise webindholdet kræves webbrowser-motoren, og det er en del af alle disse applikationer. Der er forskellige webbrowser-motorer for hver webbrowser.
Følgende tabel viser webbrowsere, og hvilke webbrowser-motorer de bruger.
Gecko kører på følgende operativsystem uden emulering:
- Windows
- Mac OS
- Linux
- BSD
- Unix
Det kan ikke køre på et Symbian OS.
Hvad er GeckoDriver?
GeckoDriver er et forbindelseslink til Firefox-browseren til din scripts i selen . GeckoDriver er en proxy, der hjælper med at kommunikere med de Gecko-baserede browsere (f.eks. Firefox), som den leverer HTTP API til.
Hvorfor har Selen brug for GeckoDriver?
Firefox (version 47 og nyere) har foretaget nogle ændringer i det, og af nogle sikkerhedsmæssige grunde tillader det ikke nogen tredjepartsdriver at interagere direkte med browserne. Derfor kan vi ikke bruge Selenium2 med de nyeste versioner af Firefox. Så vi har brug for Selen3.
Selenium3 har Marionette Driver. Selenium3 kan interagere direkte med Firefox-browseren ved hjælp af en proxy, hvilket kun er GeckoDriver.
Hvordan bruges GeckoDriver i Selenium Project?
- Lad os overveje, at du har den nyeste version af Selen WebDriver og Firefox-browseren.
- Download derefter GeckoDriver fra her . Senere skal du vælge den version, der passer til din computer.
- Uddrag filer fra den komprimerede mappe
- Tilføj referencerne til Selenium3 libs i dit projekt gennem- Højreklik på projektet => Byg sti => Konfigurer Byg sti => Biblioteker => Tilføj eksterne krukker.
- Vælg Lib-mappe => Klik på Clt + A => Klik på Åbn .
- Efter dig Klik på Åbn , vil du se følgende vindue:
- Klik derefter på OK.
- Lad os nu skrive vores kode og bruge systemegenskaben til at specificere GeckoDriver-stien.
- Tilføj nedenstående linje i din kode:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Sådan kopieres adressen på den udpakkede fil. - (Tryk på 'Skift' fra tastaturet og højreklik på filen, du får en mulighed. Derefter 'Kopier filens adresse'.))
** ( I denne kopi indsatte sti skal du sørge for, at der er dobbelt tilbageslag, ellers vil kode have en syntaksfejl.)
Lad os tage et eksempel
Eksempel
Her er bare et simpelt script, hvor vi åbner Google-websiden i en Firefox-browser og verificerer titlen 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åelse af koden
# 1) import org.openqa.selenium.WebDriver- Her importerer vi alle referencer til WebDriver-grænsefladen. Senere er dette WebDriver-interface nødvendigt for at starte en ny browser.
# 2) import org.openqa.selenium.firefox.FirefoxDriver- Her importerer vi alle referencer til FirefoxDriver-klassen.
# 3) setProperty (strengnøgle, strengværdi) - Her indstiller vi systemegenskaben ved at angive navnet på ejendommen, der kaldes nøgle, og dens sti, der kaldes værdi.
Nøgle -Navn på systemegenskaben, dvs. webdriver.gecko.driver .
Værdi - Adresse til Gecko Driver's exe-fil.
# 4) WebDriver-driver = ny FirefoxDriver () - I denne kodelinje opretter vi referencevariablen 'driver' af WebDriver, og denne referencevariabel startes ved hjælp af FirefoxDriver-klassen. En Firefox-profil uden udvidelser og plugins vil blive lanceret med Firefox-forekomst.
# 5) få (“URL”) - Ved hjælp af denne Get-metode kan vi åbne den angivne URL i browseren. Denne Get-metode kaldes ved hjælp af WebDriver's referencevariabel, dvs. driver. Strengen sendes til Get-metoden, hvilket betyder, at vores applikations-URL sendes til denne Get-metode.
# 6) administrer (). Vindue (). Maksimer () - Ved hjælp af denne kodelinje maksimerer vi browservinduet. Så snart browseren åbner den angivne URL, maksimeres den ved hjælp af denne linje.
# 7) getTitle () - Ved hjælp af denne kodelinje kan vi finde titlen på websiden. Denne metode kaldes også ved hjælp af WebDrivers referencevariabel 'driver'. Vi gemmer denne titel i strengvariablen 'appTitle'.
# 8) Sammenligning– Her sammenligner vi appTitle (som kommer igennem driver.getTitle () metode) og expTitle (som er 'Google') ved hjælp af If-erklæringen. Det er bare en simpel If-else-erklæring. Når 'Hvis' -tilstanden er opfyldt, udskriver vi meddelelsen 'Bekræftelse vellykket' ellers er vi udskrivningsmeddelelsen 'Bekræftelse mislykkedes'.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Denne kodelinje lukker browseren. Denne linje lukker kun det aktuelle vindue.
# 10) System.exit (0) - Denne kodelinjemetode bruges til at afslutte kørsel af Java Virtual Machine. Så det anbefales at lukke alle de åbne vinduer eller filer før denne linje.
GeckoDriver og TestNG
Der er ikke meget forskel i koden, men her tilføjer jeg en kode kun til din reference.
EKSEMPEL:
Lad os gå til eksemplet. Vores eksempel er at åbne Google.com-websiden, hente dens titel og udskrive den.
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); } }
Punkter, du skal huske, mens du skriver TestNG-kode:
# 1) Brug metoden System.setProperty (strengnøgle, strengværdi) inde i funktionen f (), som det foregående eksempel. I dette eksempel skrev vi det i hovedfunktionen. I TestNG er der imidlertid ingen hovedfunktioner (). Hvis du skriver det uden for funktionen, får du en syntaksfejl.
#to) Den næstvigtigste ting at huske er System.exit (0). Det er ikke nødvendigt at tilføje denne kodelinje i dit TestNG-script. Der er en grund til det, der er - efter at have kørt TestNG-scriptet genereres outputmappe, hvor du kan se de genererede rapporter og resultatet, hvis du tilføjer System.exit (0) i dit script, får denne mappe (outputmappe) ikke genereret, og du kan ikke se rapporterne.
Trin til at tilføje en sti i Systemets PATH-miljøvariabel
- På Windows-systemet skal du højreklikke på Denne computer eller Denne pc.
- Vælg Egenskaber.
- Vælg avancerede systemindstillinger.
- Klik på knappen Miljøvariabler.
- Vælg PATH fra systemvariabler.
- Klik på knappen Rediger.
- Klik på knappen Ny
- Indsæt stien til GeckoDriver-filen.
- Klik på OK.
Problemer uden Gecko Driver
Du står muligvis over for nogle problemer som dem, der er angivet nedenfor.
# 1) Hvis du bruger en gammel version af Firefox og Selenium3, får du følgende undtagelse:
software til at downloade videoer fra youtube
Undtagelse i tråden “main” java.lang.IllegalStateException
#to) Hvis du bruger den nyeste version af Firefox og en gammel version af Selenium, får du følgende undtagelse:
org.openqa.selenium.firefox.NotConnectedException : Kan ikke oprette forbindelse til vært 127.0.0.1 på port 7055 efter 45000 ms
# 3) Hvis du bruger den nyeste version af Firefox og WebDriver, men ikke bruger GeckoDriver, får du følgende undtagelse:
Undtagelse i tråden 'main' java.lang.IllegalStateException: Stien til den eksekverbare driver skal indstilles af systemegenskaben webdriver.gecko.driver; for mere information, se her .Den seneste version kan downloades fra her .
Supplerende oplysninger om GeckoDriver
Som vi ved er GeckoDriver en proxy, der hjælper med at kommunikere med Gecko-baserede browsere (f.eks. Firefox), som den leverer HTTP API til.
Denne HTTP API kan forstås ved hjælp af WebDriver-protokollen. Der er nogle noder i WebDriver-protokollen, der inkluderer Local end, Remote end, Intermediary node og Endpoint node. Kommunikation mellem disse noder er beskrevet i WebDriver-protokollen.
Den lokale ende er klientsiden af WebDriver-protokollen. Fjern ende betyder serversiden af WebDriver-protokollen. Den mellemliggende node udfører rollen som en proxy. Slutpunktsnode sættes i kraft af en brugeragent eller et lignende program.
Kommandoer og svar sendt af WebDriver til GeckoDriver oversættes til Marionette Protocol og overføres derefter til Marionette Driver af GeckoDriver. Så vi konkluderer med at sige, at GeckoDriver fungerer som en proxy mellem disse to WebDriver og Marionette.
Marionette er opdelt i 2 dele, som er serverdelen og klientdelen. Kommandoer, der sendes af klientdelen, udføres af serverdelen.
Dette kommandoudførelsesarbejde udføres inde i browseren. Marionette er intet andet end en kombination af en gecko-komponent (som er en Marionette-server) og en ekstern komponent (som kaldes som Marionette Client). GeckoDriver er skrevet på Rust-programmeringssprog.
Konklusion
GeckoDriver er en mellemfaktor mellem dine Selenium-scripts og Gecko-baserede browsere som Firefox.
GeckoDriver er en proxy til at kommunikere med Gecko-baserede browsere ( For eksempel. Firefox). Firefox (version 47 og nyere) har foretaget nogle ændringer, hvilket har ført til forebyggelse af at støtte tredjepartsdrivere til at interagere direkte med browserne.
Dette er den primære årsag til, at vi skal bruge GeckoDriver. Den nemmeste måde at bruge GeckoDriver i dit script på er at implementere brugen af System.set egenskab. (System.setProperty (“webdriver.gecko.driver”, “Stien til Gecko Driver-filen”)).
Er du ny hos GeckoDriver? Lærte du noget nyt i dag i dette GeckoDriver Selen? Eller har du noget interessant at dele med os om GeckoDriver? Du er velkommen til at udtrykke dine tanker i kommentarfeltet nedenfor.
Anbefalet læsning
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Introduktion til Selen WebDriver - Selen Tutorial # 8
- Selen Find Element By Text Tutorial med eksempler
- Implementering af vores første WebDriver Script - Selenium WebDriver Tutorial # 10
- Sådan håndteres alarmer / pop op i Selen WebDriver - Selen Tutorial # 16
- WebDriver hele opsætningen og installationen med Eclipse - Selenium-tutorial # 9
- Dybdegående formørkelsesvejledninger til begyndere
- Effektiv Selen Scripting og fejlfinding af scenarier - Selen Tutorial # 27