Scarica Geckodriver per Firefox & Selenium webdriver

In cosa consiste GeckoDriver Selenium?

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

Prima Selenium 3, Mozilla Firefox browser era il browser predefinito per Selenium. Dopo Selenium 3, i tester devono inizializzare lo script da utilizzare Firefox utilizzando GeckoDriver in modo esplicito. Selenium utilizza il protocollo W3C Webdriver per inviare richieste a GeckoDriver, che le traduce in un protocollo denominato Marionetta. Firefox capirà i comandi trasmessi sotto forma di Mariprotocollo onette e li esegue.

GeckoDriver in Selenium

Come scaricare e installare GeckoDriver in Selenium

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

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

Scarica e installa GeckoDriver nel Selenium

Passo 2) Estrai il file ZIP.
Una volta completato il download del file ZIP, estrai il contenuto del file ZIP in una cartella di file

Scarica e installa GeckoDriver nel Selenium

Passo 3) Prendere nota della posizione.
Nota la posizione in cui hai estratto il driver. La posizione verrà utilizzata in seguito per istanziare il driver.

Scarica e installa GeckoDriver nel Selenium

Modi per inizializzare GeckoDriver

Esistono tre modi diversi per inizializzare GeckoDriver.

1. Utilizzo delle capacità desiderate

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

Sintassi:

System.setProperty("webdriver.gecko.driver","Path to geckdriver.exe file");

Esempio:

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

Successivamente, imposta le funzionalità desiderate.

Le capacità desiderate aiutano Selenium 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.

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);

Ecco il codice completo

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver= new FirefoxDriver(capabilities);

2. Utilizzo della proprietà della marionetta

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

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

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

3. Utilizzando FirefoxOpzioni

Mozilla Firefox la versione 47+ ha il driver delle marionette come sistema legacy. Approfittando di ciò, il marionette può essere chiamato usando Firefox Opzioni come di seguito

FirefoxOptions options = new FirefoxOptions();
options.setLegacy(true);

Codice per l'avvio di Firefox utilizzando il driver Gecko

package 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";
    public WebDriver driver;

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", driverPath);
        DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        capabilities.setCapability("marionette", true);
        driver = new FirefoxDriver(capabilities);

    }

    @Test
    public void navigateToUrl() {
        driver.get("https://demo.guru99.com/selenium/guru99home/");
    }

    @After
    public void endTest() {
        driver.quit();
    }

}

Spiegazione del codice

Metodo @Prima

Inizialmente, dobbiamo impostare la proprietà di sistema per il driver gecko sul percorso di download del file geckdriver.exe. Dobbiamo impostare la proprietà marionette su true per Selenium usare Mariprotocollo onette per comunicare con Gecko Driver. Infine, dobbiamo avviare il file Firefox istanza del browser che utilizza l'oggetto per le funzionalità desiderate.

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

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver= new FirefoxDriver(capabilities);

@Metodo di prova

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

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

Metodo @Dopo

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

driver.quit();

Modificare uno script per non-Gecko in Gecko

Script del driver non Gecko utilizzato in precedenza Selenium 3 era semplice. Dobbiamo creare un'istanza di Firefox driver e utilizzare la variabile di istanza.

@Before
public void startBrowser() {
    driver = new FirefoxDriver();

}

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

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\GeckoDriver.exe");
        driver = new FirefoxDriver();

    }

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

Di seguito è riportato un elenco delle eccezioni più comuni che si verificano durante l'utilizzo di Gecko Driver e delle relative soluzioni.

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

La soluzione 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");

Tieni presente che devi impostare la proprietà del driver gecko prima di creare un'istanza di Mozilla Firefox conducente.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.

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

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.

Questa eccezione si verifica a causa di problemi di compatibilità tra Selenium e l'autista Geco. Il driver Gecko funziona con Firefox versione 47 o successiva. Può essere risolto aggiornando Firefox versione fino alla 47 o successiva.

WebDriver Exception: Connection Refused

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

  • Usa il driver.quit() metodo 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 Eclipse IDE
  • Utilizzare sempre la versione più recente del driver selenium gecko e la versione più recente di Firefox del browser

Vantaggio dell'utilizzo di Gecko Driver

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

Il vantaggio principale dell'utilizzo di GeckoDriver rispetto all'impostazione predefinita Firefox autista è Compatibilità. GeckoDriver utilizza Protocollo W3C WebDriver con cui comunicare Selenium. W3C è uno standard universalmente definito per Web Driver. Questo significa Selenium Sviluppatori (persone che programmano Selenium base) non è necessario creare una nuova versione di Web Driver per ciascuna versione del browser. Lo stesso Web Driver può essere utilizzato per più versioni di browser. Pertanto, GeckoDriver è preferito rispetto alla precedente implementazione di Firefox conducente.