geckodriver selenium tutorial
Tutorial GeckoDriver Selenium: impara a usare il driver Gecko (Marionette) in selenio
Per capire cos'è GeckoDriver, inizialmente dobbiamo conoscere Gecko e il motore del browser Web. Questo tutorial copre quasi tutte le funzionalità coinvolte in GeckoDriver, offrendoti così una panoramica completa.
Quindi, per cominciare, facci prima sapere cos'è Gecko e cos'è un Web Browser Engine?
Cosa imparerai:
- Cos'è Gecko?
- Cos'è un motore per browser web?
- Cos'è GeckoDriver?
- Perché Selenium ha bisogno di GeckoDriver?
- Come utilizzare GeckoDriver nel progetto Selenium?
- GeckoDriver e TestNG
- Passaggi per aggiungere un percorso nella variabile ambientale PATH del sistema
- Problemi senza Gecko Driver
- Ulteriori informazioni su GeckoDriver
- Conclusione
- Lettura consigliata
Cos'è Gecko?
Gecko è un motore di browser web. Esistono diverse applicazioni che richiedono Gecko. In particolare, le applicazioni sviluppate da Mozilla Foundation e Mozilla Corporation. Gecko è anche una necessità per molti progetti software open source. Gecko è scritto in C ++ e JavaScript.
Le ultime versioni sono scritte anche in Rust. Gecko è un motore di browser web gratuito e open source.
Cos'è un motore per browser web?
Web Browser Engine non è altro che un programma software. La funzione principale di questo programma è raccogliere il contenuto (come HTML, XML, immagini) e formattare le informazioni (come CSS) e visualizzare questo contenuto formattato sullo schermo. Web Browser Engine è anche chiamato Layout Engine o Rendering Engine.
Applicazioni come browser Web, client di posta elettronica, lettori di e-book, sistemi di guida in linea, ecc. Richiedono la visualizzazione del contenuto Web. E per visualizzare il contenuto web, è necessario il motore del browser web che fa parte di tutte queste applicazioni. Esistono diversi motori di browser web per ogni browser web.
La tabella seguente mostra i browser Web e quali motori di browser Web stanno utilizzando.
Gecko funziona sul seguente sistema operativo senza emulazione:
- finestre
- Mac OS
- Linux
- BSD
- Unix
Non può essere eseguito su un sistema operativo Symbian.
Cos'è GeckoDriver?
GeckoDriver è un collegamento al browser Firefox per il tuo script in selenio . GeckoDriver è un proxy che aiuta a comunicare con i browser basati su Gecko (ad esempio Firefox), per i quali fornisce API HTTP.
Perché Selenium ha bisogno di GeckoDriver?
Firefox (versione 47 e successive) ha apportato alcune modifiche e, per alcuni motivi di sicurezza, non consente a nessun driver di terze parti di interagire direttamente con i browser. Quindi non possiamo usare Selenium2 con le ultime versioni di Firefox. Quindi abbiamo bisogno del selenio3.
Selenium3 ha Marionette Driver. Selenium3 può interagire direttamente con il browser Firefox utilizzando un proxy, che altro non è che GeckoDriver.
Come utilizzare GeckoDriver nel progetto Selenium?
- Consideriamo che hai l'ultima versione di Selenium WebDriver e il browser Firefox.
- Quindi scarica GeckoDriver da Qui . Successivamente, scegli la versione adatta al tuo computer.
- Estrai i file dalla cartella compressa
- Aggiungi i riferimenti delle librerie Selenium3 nel tuo progetto attraverso- Fare clic con il pulsante destro del mouse sul progetto => Build Path => Configure Build Path => Libraries => Add External Jars.
- Selezionare Cartella Lib => Fare clic su Clt + A => Fare clic su Apri .
- Dopo di te fare clic su Apri , vedrai la seguente finestra:
- Quindi fare clic su OK.
- Ora scriviamo il nostro codice e utilizziamo la proprietà di sistema per specificare il percorso GeckoDriver.
- Aggiungi la riga seguente nel tuo codice:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** [ Come copiare l'indirizzo del file estratto. - (Premi 'Maiusc' dalla tastiera e fai clic con il pulsante destro del mouse sul file, verrà visualizzata un'opzione. Quindi 'Copia indirizzo del file'.)]
** [ In questo percorso di copia incollata, assicurati che ci sia una doppia barra rovesciata altrimenti il codice avrà un errore di sintassi.]
Facciamo un esempio
Esempio
Ecco solo un semplice script, in cui apriamo la pagina web di Google in un browser Firefox e verifichiamo il titolo della pagina web.
Codice1:
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); } }
Capire il codice
# 1) importa org.openqa.selenium.WebDriver- Qui stiamo importando tutti i riferimenti all'interfaccia WebDriver. Successivamente, questa interfaccia WebDriver è necessaria per creare un'istanza di un nuovo browser.
# 2) importa org.openqa.selenium.firefox.FirefoxDriver- Qui stiamo importando tutti i riferimenti alla classe FirefoxDriver.
# 3) setProperty (String key, String value) - Qui stiamo impostando la proprietà di sistema fornendo il nome della proprietà che è chiamata come Key e il suo percorso che è chiamato come Value.
Chiave -Nome della proprietà di sistema, ad es. webdriver.gecko.driver .
Valore - Indirizzo del file exe di Gecko Driver.
# 4) Driver WebDriver = nuovo FirefoxDriver () - In questa riga di codice stiamo creando la variabile di riferimento 'driver' del WebDriver e questa variabile di riferimento viene avviata utilizzando la classe FirefoxDriver. Con l'istanza di Firefox verrà avviato un profilo Firefox senza estensioni e plug-in.
# 5) get ('URL') - Usando questo metodo Get possiamo aprire l'URL specificato nel browser. Questo metodo Get viene chiamato utilizzando la variabile di riferimento di WebDriver, ovvero il driver. La stringa viene passata al metodo Get, il che significa che l'URL della nostra applicazione viene passato a questo metodo Get.
# 6) manage (). Window (). Maxim () - Usando questa riga di codice stiamo massimizzando la finestra del browser. Non appena il browser apre l'URL specificato, viene ingrandito utilizzando questa riga.
# 7) getTitle () - Utilizzando questa riga di codice, saremo in grado di trovare il titolo della pagina web. Questo metodo viene chiamato anche utilizzando la variabile di riferimento 'driver' di WebDriver. Stiamo salvando questo titolo nella variabile String 'appTitle'.
# 8) Confronto– Qui stiamo confrontando l'appTitle (che passerà driver.getTitle () metodo) e il expTitle (che è 'Google') utilizzando l'istruzione If. È solo una semplice istruzione If-else. Quando la condizione 'If' è soddisfatta, viene stampato il messaggio 'Verifica riuscita' altrimenti viene stampato il messaggio 'Verifica non riuscita'.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Questa riga di codice chiude il browser. Questa riga chiude solo la finestra corrente.
# 10) System.exit (0) - Questo metodo della riga di codice viene utilizzato per terminare l'esecuzione di Java Virtual Machine. Quindi si consiglia di chiudere tutte le finestre oi file aperti prima di questa riga.
GeckoDriver e TestNG
Non c'è molta differenza nel codice, ma qui sto aggiungendo un codice solo per riferimento.
ESEMPIO:
Passiamo all'esempio. Il nostro esempio è aprire la pagina web di Google.com, ottenere il suo titolo e stamparlo.
Codice2:
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); } }
Punti da ricordare durante la scrittura del codice TestNG:
# 1) Utilizzare il metodo System.setProperty (String key, String value) all'interno della funzione f () come nell'esempio precedente. In quell'esempio, l'abbiamo scritto nella funzione principale. Tuttavia, in TestNG, non ci sono funzioni main (). Se lo scrivi fuori dalla funzione otterrai un errore di sintassi.
#Due) La seconda cosa più importante da ricordare è System.exit (0). Non è necessario aggiungere questa riga di codice nello script TestNG. C'è una ragione per questo: dopo aver eseguito lo script TestNG, viene generata la cartella di output in cui è possibile visualizzare i report generati e il risultato, se si aggiunge System.exit (0) nello script questa cartella (cartella di output) non verrà generato e non sarai in grado di visualizzare i rapporti.
Passaggi per aggiungere un percorso nella variabile ambientale PATH del sistema
- Sul sistema Windows, fai clic con il pulsante destro del mouse su Risorse del computer o Questo PC.
- Seleziona Proprietà.
- Seleziona le impostazioni di sistema avanzate.
- Fare clic sul pulsante Variabili d'ambiente.
- Dalle variabili di sistema selezionare PATH.
- Fare clic sul pulsante Modifica.
- Fare clic sul pulsante Nuovo
- Incolla il percorso del file GeckoDriver.
- Fare clic su OK.
Problemi senza Gecko Driver
Potresti dover affrontare alcuni problemi come quelli indicati di seguito.
# 1) Se stai utilizzando una vecchia versione di Firefox e Selenium3, otterrai la seguente eccezione:
dove si trova la chiave di sicurezza di rete sul router
Eccezione nel thread 'main' java.lang.IllegalStateException
#Due) Se stai utilizzando l'ultima versione di Firefox e una vecchia versione di Selenium, otterrai la seguente eccezione:
org.openqa.selenium.firefox.NotConnectedException : Impossibile connettersi all'host 127.0.0.1 sulla porta 7055 dopo 45000 ms
# 3) Se stai utilizzando l'ultima versione di Firefox e WebDriver, ma non utilizzi GeckoDriver, otterrai la seguente eccezione:
Eccezione nel thread 'main' java.lang.IllegalStateException: il percorso dell'eseguibile del driver deve essere impostato dalla proprietà di sistema webdriver.gecko.driver; Per ulteriori informazioni, vedere Qui .L'ultima versione può essere scaricata da Qui .
Ulteriori informazioni su GeckoDriver
Come sappiamo, GeckoDriver è un proxy che aiuta a comunicare con i browser basati su Gecko (ad esempio Firefox), per i quali fornisce API HTTP.
Questa API HTTP può essere compresa utilizzando il protocollo WebDriver. Ci sono alcuni nodi nel protocollo WebDriver che includono estremità locale, estremità remota, nodo intermedio e nodo endpoint. La comunicazione tra questi nodi è descritta nel protocollo WebDriver.
L'estremità locale è il lato client del protocollo WebDriver. L'estremità remota indica il lato server del protocollo WebDriver. Il nodo Intermediario svolge il ruolo di proxy. Il nodo endpoint viene attivato da un programma utente o da un programma simile.
I comandi e le risposte inviati dal WebDriver a GeckoDriver vengono tradotti in Marionette Protocol e quindi trasferiti a Marionette Driver da GeckoDriver. Quindi concludiamo dicendo che GeckoDriver funge da proxy tra questi due WebDriver e Marionette.
Marionette è diviso in 2 parti, che è la parte server e la parte client. I comandi inviati dalla parte client vengono eseguiti dalla parte server.
Questo lavoro di esecuzione dei comandi viene eseguito all'interno del browser. Marionette non è altro che una combinazione di un componente gecko (che è un server Marionette) e un componente esterno (chiamato Marionette Client). GeckoDriver è scritto nel linguaggio di programmazione Rust.
Conclusione
GeckoDriver è un fattore intermedio tra i tuoi script Selenium e browser basati su Gecko come Firefox.
GeckoDriver è un proxy per comunicare con i browser basati su Gecko ( Per esempio. Firefox). Firefox (versione 47 e successive) ha apportato alcune modifiche, che hanno portato alla prevenzione di supportare driver di terze parti per interagire direttamente con i browser.
Questo è il motivo principale per cui dobbiamo utilizzare GeckoDriver. Il modo più semplice per utilizzare GeckoDriver nel tuo script è implementare l'uso di Proprietà System.set. [System.setProperty ('webdriver.gecko.driver', 'Percorso del file Gecko Driver')].
Sei nuovo su GeckoDriver? Hai imparato qualcosa di nuovo oggi in questo GeckoDriver Selenium? O hai qualcosa di interessante da condividere con noi su GeckoDriver? Sentiti libero di esprimere i tuoi pensieri nella sezione commenti qui sotto.
Lettura consigliata
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo
- Introduzione a Selenium WebDriver - Selenium Tutorial # 8
- Selenio Trova elemento per tutorial di testo con esempi
- Implementazione del nostro primo script WebDriver - Selenium WebDriver Tutorial # 10
- Come gestire avvisi / popup in Selenium WebDriver - Selenium Tutorial # 16
- WebDriver intera configurazione e installazione con Eclipse - Selenium Tutorial # 9
- Tutorial approfonditi su Eclipse per principianti
- Scripting efficiente del selenio e scenari di risoluzione dei problemi - Tutorial sul selenio n. 27