Ladda ner Geckodriver: Hur man installerar Firefox Förare för Selenium

Vad är GeckoDriver i Selenium?

Termen Gecko står för en webbläsarmotor som är inbyggd i Mozilla Firefox webbläsare. Gecko-drivrutinen fungerar som en proxy mellan Web Driver-aktiverade klienter (Eclipse, Netbeans, etc.) och Mozilla Firefox webbläsare. Kort sagt, Gecko driver fungerar som en länk mellan Selenium Webbdrivrutinstester och Mozilla Firefox webbläsare.

Innan Selenium 3, Mozilla Firefox webbläsare var standardwebbläsaren för Selenium. Efter Selenium 3, testare måste initiera skriptet att använda Firefox använder GeckoDriver uttryckligen. Selenium använder W3C Webdriver-protokoll för att skicka förfrågningar till GeckoDriver, som översätter dem till ett protokoll som heter Marionette. Firefox kommer att förstå de kommandon som sänds i form av Marionette-protokollet och exekverar dem.

GeckoDriver in Selenium

Hur man laddar ner och installerar GeckoDriver i Selenium

Gecko Driver är tillgänglig som en körbar fil som kan laddas ner på systemet. Följande är listan med steg för att ladda ner gecko-drivrutinen.

Steg 1 ) Välj lämplig version.
På denna sida https://github.com/mozilla/geckodriver/releases ,Välj lämplig version för nedladdning av GeckoDriver baserat på ditt operativsystem

Ladda ner och installera GeckoDriver i Selenium

Steg 2) Extrahera ZIP-filen.
När nedladdningen av ZIP-filen är klar, extraherar du innehållet i ZIP-filen till en filmapp

Ladda ner och installera GeckoDriver i Selenium

Steg 3) Notera platsen.
Notera platsen där du extraherade drivrutinen. Platsen kommer att användas senare för att instansiera föraren.

Ladda ner och installera GeckoDriver i Selenium

Sätt att initiera GeckoDriver

Det finns tre olika sätt att initiera GeckoDriver.

1. Använda DesiredCapabilities

Ställ först in systemegenskapen för Gecko Driver.

Syntax:

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

Exempelvis:

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

Ställ sedan in önskade funktioner.

Önskad kapacitet hjälper Selenium för att förstå webbläsarens namn, version och operativsystem för att utföra de automatiska testerna. Nedan finns koden för att ställa in gecko-drivrutinen med klassen DesiredCapabilities.

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

Här är den fullständiga koden

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

2. Använda marionettegenskap

Gecko-drivrutinen kan också initieras med marionettegenskapen enligt nedan

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

Om gecko-drivrutinen initieras med ovanstående metod, är koden för önskade funktioner inte krävs.

3. Använder sig av FirefoxMontering

Mozilla Firefox version 47+ har marionettdrivrutin som ett äldre system. Genom att dra fördel av detta kan marionettdrivrutin kallas att använda Firefox Alternativ enligt nedan

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

Kod för att starta firefox med Gecko-drivrutinen

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("http://demo.guru99.com/selenium/guru99home/");
    }

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

}

Kodförklaring

@Före-metoden

Inledningsvis måste vi ställa in systemegenskapen för gecko-drivrutinen till nedladdningsplatsen för geckdriver.exe-filen. Vi måste ställa in marionettegenskapen till sann för Selenium att använda Marionette-protokoll för att kommunicera med Gecko Driver. Äntligen måste vi börja Firefox webbläsarinstans som använder objektet för önskade funktioner.

Nedanstående uttalanden hjälper till att uppnå ovanstående uppgift.

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

@Testmetod

Vi navigerar till användarspecificerad URL med den inbyggda "get"-metoden som tillhandahålls av Selenium webbdrivrutin. Nedanstående uttalande hjälper till att uppnå samma sak.

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

@Efter metoden

Slutligen stänger vi webbläsarinstansen med quit-metoden.

driver.quit();

Ändra ett skript för icke-Gecko till Gecko

Icke-gecko-drivrutinskript som använts tidigare Selenium 3 var okomplicerad. Vi måste skapa en instans av Firefox drivrutinen och använd instansvariabeln.

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

}

För att konvertera till gecko behöver du helt enkelt lägga till en rad kod

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

    }

Vanliga undantag inträffade när du använde Gecko Driver

Följande är en lista över vanliga undantag som uppstår när du använder Gecko Driver och med upplösning.

Detta undantag inträffar när användaren försöker instansiera Firefox drivrutin utan att ställa in systemegenskapen för geckodrivrutin. Detta görs vanligtvis av nybörjare Selenium som inte känner till de ändringar som gjorts från Selenium 3 till Selenium tidigare versioner.

Lösningen för ovanstående undantag är att ställa in systemegenskapen för geckodrivrutinen med platsen för filen geckodriver.exe enligt nedan

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

Observera att du måste ställa in egenskapen för gecko-föraren innan du skapar en instans av Mozilla Firefox förare.

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

Detta undantag inträffar vanligtvis när Firefox versionen har uppgraderats till den senaste versionen. Lösningen för detta undantag är att uppdatera selenium jar-filen och gecko-drivrutinen till den senaste versionen och använda densamma.

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

Detta undantag uppstår på grund av kompatibilitetsproblem mellan Selenium och Gecko-förare. Gecko driver arbetar med Firefox version 47 eller högre. Det kan lösas genom att uppdatera Firefox version till 47 eller högre.

WebDriver Exception: Connection Refused

Detta undantag är meddelandet som genereras när webbdrivrutinen inte kan upprätta en anslutning med Firefox. Det kan lösas med någon av följande tekniker.

  • Använda driver.quit() metod för att förstöra tidigare instanser av webbdrivrutin
  • Rengör webbläsarens cache innan du kör dina automatiska tester
  • Rengör projektarbetsytan inuti Eclipse IDE
  • Använd alltid den senaste versionen av drivrutinen för selenium gecko och den senaste versionen av Firefox webbläsare

Fördelen med att använda Gecko Driver

Selenium Webdriver version 2.53 är inte kompatibel med Mozilla Firefox version 47.0+. De Firefox drivrutin som används i tidigare versioner av Mozilla Firefox kommer att avbrytas och endast GeckoDriver-implementeringen kommer att användas. Därför tvingas testare att använda GeckoDriver om de vill köra automatiserade tester på Mozilla Firefox version 47.0+. Men den stora frågan - vad är fördelen?

Den stora fördelen med att använda GeckoDriver i motsats till standarden Firefox föraren är Kompatibilitet. GeckoDriver använder W3C WebDriver-protokoll att kommunicera med Selenium. W3C är en universellt definierad standard för Web Driver. Detta betyder Selenium Utvecklare (Personer som kodar Selenium base) behöver inte skapa en ny version av webbdrivrutinen för varje webbläsarversion. Samma webbdrivrutin kan användas för flera webbläsarversioner. Därför är GeckoDriver att föredra jämfört med den tidigare implementeringen av Firefox förare.