geckodriver selenium tutorial
GeckoDriver Selen Tutorial: Lär dig hur du använder Gecko (Marionette) Driver i Selen
För att förstå vad GeckoDriver är, måste vi först veta om Gecko och webbläsarmotorn. Denna handledning täcker nästan alla funktioner som är involverade i GeckoDriver, vilket ger dig en fullständig översikt över den.
Så till att börja med, låt oss först veta vad Gecko är och vad är en webbläsarmotor?
Vad du kommer att lära dig:
- Vad är Gecko?
- Vad är en webbläsarmotor?
- Vad är GeckoDriver?
- Varför behöver Selen GeckoDriver?
- Hur använder jag GeckoDriver i Selenium Project?
- GeckoDriver och TestNG
- Steg för att lägga till en väg i Systemets PATH-miljövariabel
- Problem utan Gecko Driver
- Ytterligare information om GeckoDriver
- Slutsats
- Rekommenderad läsning
Vad är Gecko?
Gecko är en webbläsarmotor. Det finns flera applikationer som kräver Gecko. Specifikt de applikationer som utvecklats av Mozilla Foundation och Mozilla Corporation. Gecko är också ett behov av många öppen källkodsprojekt. Gecko är skrivet i C ++ och JavaScript.
De senaste versionerna är också skrivna i Rust. Gecko är en gratis webbläsarmotor med öppen källkod.
Vad är en webbläsarmotor?
Webbläsarmotor är inget annat än ett program. Programmets huvudfunktion är att samla in innehållet (som HTML, XML, bilder) och formatera informationen (som CSS) och visa detta formaterade innehåll på skärmen. Webbläsarmotor kallas också Layout Engine eller Rendering Engine.
Applikationer som webbläsare, e-postklienter, e-bokläsare, online-hjälpsystem etc. behöver visa webbinnehåll. Och för att visa webbinnehållet krävs webbläsarmotorn och det är en del av alla dessa applikationer. Det finns olika webbläsarmotorer för varje webbläsare.
Följande tabell visar webbläsare och vilka webbläsarmotorer de använder.
Gecko körs på följande operativsystem utan emulering:
- Windows
- Mac OS
- Linux
- BSD
- Unix
Det kan inte köras på ett Symbian-operativsystem.
Vad är GeckoDriver?
GeckoDriver är en anslutande länk till Firefox-webbläsaren för din manus i selen . GeckoDriver är en proxy som hjälper till att kommunicera med de Gecko-baserade webbläsarna (t.ex. Firefox), för vilken den tillhandahåller HTTP API.
Varför behöver Selen GeckoDriver?
Firefox (version 47 och senare) har gjort vissa ändringar av det och av vissa säkerhetsskäl tillåter det inte någon tredjepartsförare att direkt interagera med webbläsarna. Därför kan vi inte använda Selenium2 med de senaste versionerna av Firefox. Så vi behöver Selenium3.
Selenium3 har Marionette Driver. Selenium3 kan direkt interagera med Firefox-webbläsaren med hjälp av en proxy, vilket bara är GeckoDriver.
Hur använder jag GeckoDriver i Selenium Project?
- Låt oss överväga att du har den senaste versionen av Selen WebDriver och Firefox-webbläsaren.
- Ladda sedan ner GeckoDriver från här . Senare väljer du den version som passar din dator.
- Extrahera filer från den komprimerade mappen
- Lägg till referenser för Selenium3 libs i ditt projekt genom- Högerklicka på projektet => Build Path => Configure Build Path => Libraries => Add External Jars.
- Välj Lib-mapp => Klicka på Clt + A => Klicka på Öppna .
- Efter dig klicka på öppna visas följande fönster:
- Klicka sedan på OK.
- Låt oss nu skriva vår kod och använda systemegenskapen för att ange GeckoDriver-sökvägen.
- Lägg till nedanstående rad i din kod:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Hur man kopierar adressen till den extraherade filen. - (Tryck på 'Skift' från tangentbordet och högerklicka på filen, du får ett alternativ. Sedan 'Kopiera filens adress'.))
** ( Se till att det finns en dubbel backslash i den här kopierade klistra in sökvägen, annars kommer koden att ha ett syntaxfel.)
Låt oss ta ett exempel
Exempel
Här är bara ett enkelt skript där vi öppnar Googles webbsida i en Firefox-webbläsare och verifierar webbsidans titel.
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); } }
Förstå koden
# 1) importera org.openqa.selenium.WebDriver- Här importerar vi alla referenser till WebDriver-gränssnittet. Senare krävs detta WebDriver-gränssnitt för att starta en ny webbläsare.
# 2) importera org.openqa.selenium.firefox.FirefoxDriver- Här importerar vi alla referenser till FirefoxDriver-klassen.
# 3) setProperty (Strängnyckel, Strängvärde) - Här ställer vi in systemegenskapen genom att ange namnet på egenskapen som kallas nyckel och dess väg som kallas värde.
Nyckel -Namnet på systemegenskapen d.v.s. webdriver.gecko.driver .
Värde - Adress till Gecko Driver exe-fil.
# 4) WebDriver-drivrutin = ny FirefoxDriver () - I denna kod kod skapar vi referensvariabeln 'drivrutin' för WebDriver och denna referensvariabel initieras med FirefoxDriver-klassen. En Firefox-profil utan tillägg och plugins kommer att lanseras med Firefox-instans.
# 5) få (“URL”) - Med den här Get-metoden kan vi öppna den angivna URL: en i webbläsaren. Denna Get-metod kallas med hjälp av WebDrivers referensvariabel, dvs. drivrutin. Strängen skickas till Get-metoden, vilket innebär att vår applikations-URL skickas till den här Get-metoden.
# 6) hantera (). Fönster (). Maximera () - Med den här kodraden maximerar vi webbläsarfönstret. Så snart webbläsaren öppnar den angivna webbadressen maximeras den med den här raden.
# 7) getTitle () - Med den här kodraden kommer vi att kunna hitta titeln på webbsidan. Denna metod kallas också med hjälp av WebDrivers referensvariabel 'drivrutin'. Vi sparar den här titeln i strängvariabeln 'appTitle'.
# 8) Jämförelse– Här jämför vi appTitle (som kommer igenom driver.getTitle () metod) och expTitle (som är 'Google') med If-uttalandet. Det är bara ett enkelt If-else-uttalande. När 'Om' -villkoret är uppfyllt skriver vi ut meddelandet 'Verifiering lyckades' annars är vi utskriftsmeddelandet 'Verifiering misslyckades'.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Denna kodrad stänger webbläsaren. Denna rad stänger endast det aktuella fönstret.
# 10) System.exit (0) - Denna kodradmetod används för att avsluta Java Virtual Machine. Så det rekommenderas att stänga alla öppna fönster eller filer innan denna rad.
GeckoDriver och TestNG
Det är inte mycket skillnad i koden, men här lägger jag till en kod bara för din referens.
EXEMPEL:
Låt oss gå till exemplet. Vårt exempel är att öppna webbsidan för Google.com, skaffa titeln och skriva ut den.
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); } }
Poäng att komma ihåg när du skriver TestNG-kod:
# 1) Använd metoden System.setProperty (String key, String value) inuti funktionen f () på samma sätt som i föregående exempel. I det exemplet skrev vi det i huvudfunktionen. I TestNG finns det dock inga huvudfunktioner (). Om du skriver det utanför funktionen får du ett syntaxfel.
#två) Det näst viktigaste att komma ihåg är System.exit (0). Det finns inget behov av att lägga till denna kodrad i ditt TestNG-skript. Det finns en anledning till det som är - efter att ha kört TestNG-skriptet genereras utdatamappen där du kan se de genererade rapporterna och resultatet, om du lägger till System.exit (0) i ditt skript får den här mappen (utdatamappen) inte genereras och du kommer inte att kunna se rapporterna.
Steg för att lägga till en väg i Systemets PATH-miljövariabel
- På Windows-systemet högerklickar du på Den här datorn eller Den här datorn.
- Välj Egenskaper.
- Välj avancerade systeminställningar.
- Klicka på knappen Miljövariabler.
- Välj PATH från systemvariabler.
- Klicka på knappen Redigera.
- Klicka på knappen Ny
- Klistra in sökvägen till GeckoDriver-filen.
- Klicka på OK.
Problem utan Gecko Driver
Du kanske står inför vissa problem som de som anges nedan.
# 1) Om du använder en gammal version av Firefox och Selenium3 får du följande undantag:
bästa mobilspionapp för Android
Undantag i tråden 'huvud' java.lang.IllegalStateException
#två) Om du använder den senaste versionen av Firefox och en gammal version av Selenium får du följande undantag:
org.openqa.selenium.firefox.NotConnectedException : Det går inte att ansluta till värd 127.0.0.1 på port 7055 efter 45000 ms
# 3) Om du använder den senaste versionen av Firefox och WebDriver men inte använder GeckoDriver får du följande undantag:
Undantag i tråden 'main' java.lang.IllegalStateException: Sökvägen till drivrutins körbar måste ställas in av systemegenskapen webdriver.gecko.driver; för mer information, se här .Den senaste versionen kan laddas ner från här .
Ytterligare information om GeckoDriver
Som vi vet är GeckoDriver en proxy som hjälper till att kommunicera med Gecko-baserade webbläsare (t.ex. Firefox), för vilken den tillhandahåller HTTP API.
Detta HTTP API kan förstås med hjälp av WebDriver-protokollet. Det finns några noder i WebDriver-protokollet som inkluderar Local end, Remote end, Intermediary node och Endpoint node. Kommunikation mellan dessa noder beskrivs i WebDriver-protokollet.
Den lokala änden är klientsidan av WebDriver-protokollet. Fjärrslut betyder serversidan av WebDriver-protokollet. Intermediärnoden utför rollen som en proxy. Slutpunktsnod genomförs av en användaragent eller ett liknande program.
Kommandon och svar som skickas av WebDriver till GeckoDriver översätts till Marionette Protocol och överförs sedan till Marionette Driver av GeckoDriver. Så vi avslutar med att säga att GeckoDriver fungerar som en proxy mellan dessa två WebDriver och Marionette.
Marionette är uppdelad i två delar, vilket är serverdelen och klientdelen. Kommandon som skickas av klientdelen körs av serverdelen.
Detta kommandokörningsarbete utförs i webbläsaren. Marionette är inget annat än en kombination av en gecko-komponent (som är en Marionette-server) och en extern komponent (som kallas Marionette Client). GeckoDriver är skrivet på Rust-programmeringsspråk.
Slutsats
GeckoDriver är en mellanfaktor mellan dina Selen-skript och Gecko-baserade webbläsare som Firefox.
GeckoDriver är en proxy för att kommunicera med Gecko-baserade webbläsare ( T.ex. Firefox). Firefox (version 47 och senare) har gjort vissa ändringar, vilket har lett till att förhindra att tredje parts drivrutiner kan interagera direkt med webbläsarna.
Detta är den främsta anledningen till att vi behöver använda GeckoDriver. Det enklaste sättet att använda GeckoDriver i ditt skript är att implementera användningen av System.set-egenskap. (System.setProperty (“webdriver.gecko.driver”, ”Path of the Gecko Driver file”)).
Är du ny på GeckoDriver? Lärde du dig något nytt idag i detta GeckoDriver Selen? Eller har du något intressant att dela med oss om GeckoDriver? Uttryck gärna dina kommentarer i kommentarfältet nedan.
Rekommenderad läsning
- Gurkselen-handledning: Gurka Java Selen WebDriver-integration
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Selen Find Element by Text Tutorial med exempel
- Implementation of Our First WebDriver Script - Selenium WebDriver Tutorial # 10
- Hur man hanterar varningar / popup-fönster i Selen WebDriver - Selen Tutorial # 16
- WebDriver Hela installationen och installationen med Eclipse - Selen Tutorial # 9
- Fördjupade förmörkningsövningar för nybörjare
- Effektiv skriptning av selen och felsökning av scenarier - Selen-handledning nr 27