Gecko (Marionette) Driver Selenium: Scarica, Installa, Usa con Firefox

Sommario:

Anonim

Cos'è Gecko Driver?

Il termine Gecko sta per un motore per browser Web integrato nel browser Mozilla Firefox. Il driver Gecko funge da proxy tra i client abilitati per Web Driver (Eclipse, Netbeans, ecc.) E il browser Mozilla Firefox. In breve, il driver Gecko funge da collegamento tra i test di Selenium Web Driver e il browser Mozilla Firefox.

Prima di Selenium 3, il browser Mozilla Firefox era il browser predefinito per Selenium. Dopo Selenium 3, i tester devono inizializzare lo script per utilizzare Firefox utilizzando esplicitamente GeckoDriver. Selenium utilizza il protocollo W3C Webdriver per inviare richieste a GeckoDriver, che le traduce in un protocollo chiamato Marionette. Firefox capirà i comandi trasmessi sotto forma di protocollo Marionette e li eseguirà.

Vantaggio dell'utilizzo di Gecko Driver

Selenium Webdriver versione 2.53 non è compatibile con Mozilla Firefox versione 47.0+. Il driver Firefox utilizzato nelle versioni precedenti di Mozilla Firefox verrà interrotto e verrà utilizzata solo l'implementazione di GeckoDriver. Quindi i tester sono costretti a utilizzare GeckoDriver se vogliono eseguire test automatici su Mozilla Firefox versione 47.0+. Ma la grande domanda: qual è il vantaggio?

Il principale vantaggio dell'utilizzo di GeckoDriver rispetto al driver predefinito di Firefox è la compatibilità . GeckoDriver utilizza il protocollo W3C WebDriver per comunicare con Selenium. W3C è uno standard universalmente definito per Web Driver. Ciò significa che gli sviluppatori Selenium (persone che codificano Selenium base) non devono creare una nuova versione di Web Driver per ogni versione del browser. Lo stesso driver Web può essere utilizzato per più versioni del browser. Quindi, GeckoDriver è preferito rispetto alla precedente implementazione del driver Firefox.

Scarica e installa Gecko Driver:

Gecko Driver è disponibile come file eseguibile che può essere scaricato sul sistema. Di seguito è riportato l'elenco dei passaggi per scaricare il driver gecko.

Passaggio 1) In questa pagina https://github.com/mozilla/geckodriver/releases, seleziona la versione appropriata per il download di GeckoDriver in base al tuo sistema operativo

Passaggio 2) Una volta completato il download del file ZIP, estrarre il contenuto del file ZIP in una cartella di file

Passaggio 3) Annotare la posizione in cui è stato estratto il driver. La posizione verrà utilizzata in seguito per creare un'istanza del driver.

Modi per inizializzare GeckoDriver:

Esistono tre modi diversi per inizializzare GeckoDriver.

1. Utilizzo di DesiredCapabilities:

Innanzitutto, imposta la proprietà di sistema per Gecko Driver.

Sintassi:

System.setProperty ("webdriver.gecko.driver", "Percorso del file geckdriver.exe");

Esempio:

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");

Quindi, imposta le capacità desiderate.

Le funzionalità desiderate aiutano Selenium a comprendere il nome del browser, la versione e il sistema operativo per eseguire i test automatizzati. Di seguito è riportato il codice per impostare il driver gecko utilizzando la classe DesiredCapabilities.

Capacità DesiredCapabilities = DesiredCapabilities.firefox ();capacità.setCapability ("marionette", true);

Ecco il codice completo

System.setProperty ("webdriver.gecko.driver", driverPath);Capacità DesiredCapabilities = DesiredCapabilities.firefox ();capacità.setCapability ("marionette", true);driver = nuovo FirefoxDriver (funzionalità);

2. Utilizzo della proprietà marionetta:

Il driver Gecko può anche essere inizializzato utilizzando la proprietà marionetta come di seguito

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");

Se il driver gecko viene inizializzato utilizzando il metodo sopra, il codice per le funzionalità desiderate non è richiesto.

3. Utilizzo di FirefoxOptions:

Mozilla Firefox versione 47+ ha il driver marionette come sistema legacy. Approfittando di questo, il driver marionette può essere chiamato utilizzando le opzioni di Firefox come di seguito

Opzioni FirefoxOptions = nuovo FirefoxOptions ();options.setLegacy (true);

Codice per l'avvio di Firefox utilizzando il driver Gecko:

pacchetto com.guru99.demo;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.remote.DesiredCapabilities;public class GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";driver WebDriver pubblico;@Primapublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Capacità DesiredCapabilities = DesiredCapabilities.firefox ();capacità.setCapability ("marionette", true);driver = nuovo FirefoxDriver (funzionalità);}@Testpublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Dopopublic void endTest () {driver.quit ();}}

Spiegazione del codice:

Metodo @Before:

Inizialmente, è necessario impostare la proprietà di sistema per il driver gecko sul percorso di download del file geckdriver.exe. Dobbiamo impostare la proprietà marionette su true affinché Selenium utilizzi il protocollo Marionette per comunicare con Gecko Driver. Infine, dobbiamo avviare l'istanza del browser Firefox utilizzando l'oggetto per Capacità desiderate.

Le seguenti affermazioni aiutano a realizzare il compito di cui sopra.

System.setProperty ("webdriver.gecko.driver", driverPath);Capacità DesiredCapabilities = DesiredCapabilities.firefox ();capacità.setCapability ("marionette", true);driver = nuovo FirefoxDriver (funzionalità);

@Metodo di prova:

Stiamo navigando verso l'URL specificato dall'utente utilizzando il metodo "get" integrato fornito dal driver web Selenium. La seguente dichiarazione aiuta a ottenere lo stesso risultato.

driver.get ("http://demo.guru99.com/selenium/guru99home/");

@Dopo il metodo:

Infine, stiamo chiudendo l'istanza del browser utilizzando il metodo quit.

driver.quit ();

Modifica uno script per non Gecko in Gecko:

Lo script del driver non geco utilizzato prima di Selenium 3 era semplice. Dobbiamo creare un'istanza del driver Firefox e utilizzare la variabile di istanza.

@Primapublic void startBrowser () {driver = nuovo FirefoxDriver ();}

Per convertire in gecko, devi semplicemente aggiungere una riga di codice

@Primapublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");driver = nuovo FirefoxDriver ();}

Si sono verificate eccezioni comuni durante l'utilizzo di Gecko Driver:

Di seguito è riportato un elenco di eccezioni comuni che si verificano durante l'utilizzo di Gecko Driver e con la risoluzione.

1. Il percorso dell'eseguibile del driver deve essere impostato dalla proprietà di sistema webdriver.gecko.driver:

Questa eccezione si verifica quando l'utente tenta di creare un'istanza del driver Firefox senza impostare la proprietà di sistema per il driver gecko. Questo di solito viene fatto dai principianti di Selenium che non sono a conoscenza delle modifiche apportate da Selenium 3 alle versioni precedenti di Selenium.

La risoluzione per l'eccezione di cui sopra è impostare la proprietà di sistema per il driver gecko con la posizione del file geckodriver.exe come di seguito

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ geckodriver.exe");

Si noti che è necessario impostare la proprietà del driver gecko prima di creare un'istanza del driver Mozilla Firefox.

2. Eccezione Firefox non connessa:

org.openqa.selenium.firefox.NotConnectedException: impossibile connettersi all'host 127.0.0.1 sulla porta 7055 dopo 45000 ms.

Questa eccezione si verifica in genere quando la versione di Firefox è stata aggiornata alla versione più recente. La soluzione per questa eccezione è aggiornare il file jar selenio e il driver gecko alla versione più recente e utilizzare lo stesso.

3. Eccezione sessione non creata:

org.openqa.selenium.SessionNotCreatedException: impossibile creare una nuova sessione remota.

Questa eccezione si verifica a causa di problemi di compatibilità tra Selenium e il driver Gecko. Il driver Gecko funziona con Firefox versione 47 o superiore. Può essere risolto aggiornando la versione di Firefox alla 47 o superiore.

4. Eccezione connessione rifiutata:

Eccezione WebDriver: connessione rifiutata

Questa eccezione è il messaggio generato quando il driver web non è in grado di stabilire una connessione con Firefox. Può essere risolto utilizzando una qualsiasi delle seguenti tecniche.

  • Usa il metodo driver.quit () per distruggere le istanze precedenti del driver web
  • Pulisci la cache del browser prima di eseguire i test automatizzati
  • Pulisci l'area di lavoro del progetto all'interno di Eclipse IDE
  • Utilizza sempre l'ultima versione del driver selenium gecko e la versione più recente del browser Firefox