geckodriver selenium tutorial
GeckoDriver Selenium-zelfstudie: leer hoe u Gecko (Marionette) Driver in Selenium gebruikt
Om te begrijpen wat GeckoDriver is, moeten we in eerste instantie weten over Gecko en de webbrowser-engine. Deze tutorial behandelt bijna alle functies die bij GeckoDriver betrokken zijn, waardoor je er een compleet overzicht van krijgt.
Dus om te beginnen, laat ons eerst weten wat Gecko is en wat een webbrowser-engine is?
Wat je leert:
- Wat is gekko?
- Wat is een webbrowser-engine?
- Wat is GeckoDriver?
- Waarom heeft Selenium GeckoDriver nodig?
- Hoe GeckoDriver te gebruiken in Selenium Project?
- GeckoDriver en TestNG
- Stappen om een pad toe te voegen in de PATH-omgevingsvariabele van het systeem
- Problemen zonder Gecko Driver
- Aanvullende informatie over GeckoDriver
- Gevolgtrekking
- Aanbevolen literatuur
Wat is gekko?
Gecko is een webbrowser-engine. Er zijn verschillende applicaties waarvoor Gecko nodig is. In het bijzonder de applicaties die zijn ontwikkeld door Mozilla Foundation en de Mozilla Corporation. Gecko is ook een behoefte aan veel open source softwareprojecten. Gecko is geschreven in C ++ en JavaScript.
De laatste versies zijn ook in Rust geschreven. Gecko is een gratis en open source webbrowser-engine.
Wat is een webbrowser-engine?
Web Browser Engine is niets anders dan een softwareprogramma. De belangrijkste functie van dit programma is het verzamelen van de inhoud (zoals HTML, XML, afbeeldingen) en het formatteren van de informatie (zoals CSS) en het weergeven van deze opgemaakte inhoud op het scherm. Web Browser Engine wordt ook wel Layout Engine of Rendering Engine genoemd.
Toepassingen zoals webbrowsers, e-mailclients, e-book readers, on-line help-systemen enz. Moeten webinhoud weergeven. En om de webcontent weer te geven, is de webbrowser-engine vereist en deze maakt deel uit van al deze applicaties. Er zijn verschillende webbrowser-engines voor elke webbrowser.
De volgende tabel toont webbrowsers en welke webbrowser-engines ze gebruiken.
Gecko draait op het volgende besturingssysteem zonder emulatie:
- ramen
- Mac OS
- Linux
- BSD
- Unix
Het kan niet op een Symbian-besturingssysteem worden uitgevoerd.
Wat is GeckoDriver?
GeckoDriver is een verbindende link naar de Firefox-browser voor uw scripts in Selenium GeckoDriver is een proxy die helpt om te communiceren met de op Gecko gebaseerde browsers (bijvoorbeeld Firefox), waarvoor het een HTTP-API biedt.
Waarom heeft Selenium GeckoDriver nodig?
Firefox (versie 47 en hoger) heeft enkele wijzigingen aangebracht en om veiligheidsredenen staat het stuurprogramma's van derden niet toe om rechtstreeks met de browsers te communiceren. Daarom kunnen we Selenium2 niet gebruiken met de nieuwste versies van Firefox. Dus we hebben Selenium3 nodig.
Selenium3 heeft Marionette Driver. Selenium3 kan rechtstreeks communiceren met de Firefox-browser met behulp van een proxy, die niets anders is dan de GeckoDriver.
Hoe GeckoDriver te gebruiken in Selenium Project?
- Laten we aannemen dat u de nieuwste versie van Selenium WebDriver en de Firefox-browser.
- Download vervolgens de GeckoDriver van hier Kies later de versie die geschikt is voor uw computer.
- Bestanden uitpakken uit de gecomprimeerde map
- Voeg de referenties van Selenium3-libs toe aan uw project via Klik met de rechtermuisknop op het project => Build Path => Build Path configureren => Bibliotheken => Externe Jars toevoegen.
- Selecteer Lib-map => Klik op Clt + A => Klik op Openen
- Na u klik open , ziet u het volgende venster:
- Klik vervolgens op OK.
- Laten we nu onze code schrijven en de systeemeigenschap gebruiken om het GeckoDriver-pad op te geven.
- Voeg de onderstaande regel toe aan uw code:
Hoe het adres van het uitgepakte bestand te kopiëren. - (Druk op ’Shift’ op het toetsenbord en klik met de rechtermuisknop op het bestand, u krijgt een optie. Vervolgens ‘Adres van het bestand kopiëren’.)]
Zorg ervoor dat er in dit kopieergeplakte pad een dubbele backslash is, anders krijgt de code een syntaxisfout.]
Laten we een voorbeeld nemen
Voorbeeld
Hier is slechts een eenvoudig script, waarin we de Google-webpagina openen in een Firefox-browser en de titel van de webpagina verifiëren.
Code1
De code begrijpen
# 1) importeer org.openqa.selenium.WebDriver- Hier importeren we alle verwijzingen naar de WebDriver-interface. Later is deze WebDriver-interface nodig om een nieuwe browser te starten.
# 2) importeer org.openqa.selenium.firefox.FirefoxDriver- Hier importeren we alle verwijzingen naar de FirefoxDriver-klasse.
# 3) setProperty (String-sleutel, String-waarde) - Hier stellen we de systeemeigenschap in door de naam van de eigenschap op te geven die wordt genoemd als sleutel en het pad dat wordt genoemd als waarde.
Sleutel -Naam van de systeemeigenschap, d.w.z. webdriver.gecko.driver
Waarde - Adres van het exe-bestand van Gecko Driver.
# 4) WebDriver-stuurprogramma = nieuwe FirefoxDriver () - In deze coderegel maken we de referentievariabele ‘driver’ van de WebDriver en deze referentievariabele wordt gestart met de FirefoxDriver-klasse. Een Firefox-profiel zonder extensies en plug-ins wordt gestart met een Firefox-instantie.
# 5) get ('URL') - Met behulp van deze Get-methode kunnen we de opgegeven URL in de browser openen. Deze Get-methode wordt aangeroepen met behulp van de referentievariabele van de WebDriver, d.w.z. driver. De string wordt doorgegeven aan de Get-methode, wat betekent dat onze applicatie-URL wordt doorgegeven aan deze Get-methode.
# 6) manage (). Window (). Maximaliseren () - Met behulp van deze regel code maximaliseren we het browservenster. Zodra de browser de opgegeven URL opent, wordt deze gemaximaliseerd met behulp van deze regel.
# 7) getTitle () - Met behulp van deze regel code kunnen we de titel van de webpagina vinden. Deze methode wordt ook genoemd met behulp van de referentievariabele ‘driver’ van de WebDriver. We slaan deze titel op in de tekenreeksvariabele ‘appTitle’.
# 8) Vergelijking - Hier vergelijken we de appTitle (die doorkomt driver.getTitle () methode) en de expTitle (dat is 'Google') met behulp van de If-instructie. Het is gewoon een simpele If-else-verklaring. Wanneer aan de 'Als' -voorwaarde is voldaan, drukken we het bericht 'Verificatie geslaagd', anders zijn we het afdrukbericht 'Verificatie mislukt'.
# 9) driver.close () - Deze regel code sluit de browser. Deze regel sluit alleen het huidige venster.
# 10) System.exit (0) - Deze codemethode wordt gebruikt om het uitvoeren van Java Virtual Machine te beëindigen. Het wordt dus aanbevolen om alle geopende vensters of bestanden vóór deze regel te sluiten.
GeckoDriver en TestNG
Er is niet veel verschil in de code, maar hier voeg ik een code toe alleen ter referentie.
VOORBEELD:
Laten we naar het voorbeeld gaan. Ons voorbeeld is om de webpagina Google.com te openen, de titel op te halen en deze af te drukken.
Code2:
Punten om te onthouden bij het schrijven van TestNG-code:
# 1) Gebruik de System.setProperty (String key, String value) methode binnen de functie f (), hetzelfde als in het vorige voorbeeld. In dat voorbeeld hebben we het in de hoofdfunctie geschreven. In TestNG zijn er echter geen main () -functies. Als je het buiten de functie schrijft, krijg je een syntaxisfout.
#twee) Het tweede belangrijkste om te onthouden is System.exit (0). Het is niet nodig om deze regel code aan uw TestNG-script toe te voegen. Daar is één reden voor: na het uitvoeren van het TestNG-script wordt een uitvoermap gegenereerd waarin u de gegenereerde rapporten en het resultaat kunt bekijken.Als u System.exit (0) toevoegt aan uw script, krijgt deze map (uitvoermap) niet gegenereerd en u kunt de rapporten niet bekijken.
Stappen om een pad toe te voegen in de PATH-omgevingsvariabele van het systeem
- Klik op het Windows-systeem met de rechtermuisknop op Deze computer of Deze pc.
- Selecteer Eigenschappen.
- Selecteer geavanceerde systeeminstellingen.
- Klik op de knop Omgevingsvariabelen.
- Selecteer in Systeemvariabelen PAD.
- Klik op de knop Bewerken.
- Klik op de nieuwe knop
- Plak het pad van het GeckoDriver-bestand.
- Klik OK.
Problemen zonder Gecko Driver
U kunt enkele problemen tegenkomen, zoals de onderstaande.
# 1) Als u een oude versie van Firefox en Selenium3 gebruikt, krijgt u de volgende uitzondering:
download audio van hoge kwaliteit van youtube
Uitzondering in thread 'main' java.lang.IllegalStateException
#twee) Als u de nieuwste versie van Firefox en een oude versie van Selenium gebruikt, krijgt u de volgende uitzondering:
org.openqa.selenium.firefox.NotConnectedException : Kan geen verbinding maken met host 127.0.0.1 op poort 7055 na 45.000 ms
# 3) Als u de nieuwste versie van Firefox en WebDriver gebruikt, maar GeckoDriver niet, krijgt u de volgende uitzondering:
Uitzondering in thread 'main' java.lang.IllegalStateException: Het pad naar het uitvoerbare bestand van het stuurprogramma moet worden ingesteld door de systeemeigenschap webdriver.gecko.driver; zie voor meer informatie hier De nieuwste versie kan worden gedownload van hier
Aanvullende informatie over GeckoDriver
Zoals we weten is GeckoDriver een proxy die helpt om te communiceren met op Gecko gebaseerde browsers (bijv. Firefox), waarvoor het een HTTP API biedt.
Deze HTTP-API kan worden begrepen met behulp van het WebDriver-protocol. Er zijn enkele knooppunten in het WebDriver-protocol, waaronder Local end, Remote end, Intermediary node en Endpoint node. De communicatie tussen deze knooppunten wordt beschreven in het WebDriver-protocol.
Het lokale uiteinde is de clientkant van het WebDriver-protocol. Remote end betekent de serverkant van het WebDriver-protocol. Het tussenknooppunt vervult de rol van een proxy. Eindpuntknooppunt wordt in werking gesteld door een user-agent of een soortgelijk programma.
Commando's en antwoorden die door de WebDriver naar GeckoDriver worden gestuurd, worden vertaald naar het Marionette Protocol en vervolgens door GeckoDriver naar Marionette Driver gestuurd. We concluderen dus dat GeckoDriver optreedt als een proxy tussen deze twee WebDriver en Marionette.
Marionette is opgedeeld in 2 delen, het servergedeelte en het clientgedeelte. Commando's die door het clientgedeelte worden verzonden, worden door het servergedeelte uitgevoerd.
Dit uitvoeren van opdrachten wordt uitgevoerd in de browser. Marionette is niets anders dan een combinatie van een gekko-component (wat een Marionette-server is) en een externe component (die Marionette Client wordt genoemd). GeckoDriver is geschreven in de programmeertaal Rust.
Gevolgtrekking
GeckoDriver is een tussenliggende factor tussen uw Selenium-scripts en op Gecko gebaseerde browsers zoals Firefox.
GeckoDriver is een proxy om te communiceren met op Gecko gebaseerde browsers ( Bijv. Firefox). Firefox (versie 47 en hoger) heeft enkele wijzigingen aangebracht, waardoor de ondersteuning van stuurprogramma's van derden niet meer rechtstreeks met de browsers kan worden uitgevoerd.
Dit is de belangrijkste reden waarom we de GeckoDriver moeten gebruiken. De eenvoudigste manier om GeckoDriver in uw script te gebruiken, is door het gebruik van System.set eigenschap. [System.setProperty ('webdriver.gecko.driver', 'Pad van het Gecko Driver-bestand')].
Ben je nieuw bij GeckoDriver? Heb je vandaag iets nieuws geleerd in dit GeckoDriver Selenium? Of heb je iets interessants met ons te delen over GeckoDriver? Voel je vrij om je mening te geven in de comments hieronder.
Aanbevolen literatuur
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Inleiding tot Selenium WebDriver - Selenium Tutorial # 8
- Selenium Find Element By Text Tutorial met voorbeelden
- Implementatie van ons eerste WebDriver-script - Selenium WebDriver-zelfstudie # 10
- Omgaan met waarschuwingen / pop-ups in Selenium WebDriver - Selenium Tutorial # 16
- WebDriver Volledige installatie en installatie met Eclipse - Selenium Tutorial # 9
- Diepgaande Eclipse-zelfstudies voor beginners
- Efficiënte Selenium-scripts en scenario's voor probleemoplossing - Selenium-zelfstudie # 27