Baixe o Geckodriver para Firefox & Selenium

Em que consiste o GeckoDriver Selenium?

O termo Gecko significa um mecanismo de navegador da Web embutido no Mozilla Firefox navegador. O driver Gecko atua como um proxy entre clientes habilitados para Web Driver(Eclipse, Netbeans, etc.) e Mozilla Firefox navegador. Em suma, o driver Gecko atua como um link entre Selenium Testes de driver Web e Mozilla Firefox navegador.

Antes Selenium 3, Mozilla Firefox navegador era o navegador padrรฃo para Selenium. Depois de Selenium 3, os testadores precisam inicializar o script para usar Firefox usando GeckoDriver explicitamente. Selenium usa o protocolo W3C Webdriver para enviar solicitaรงรตes ao GeckoDriver, que as traduz em um protocolo chamado Marioneta. Firefox entenderรก os comandos transmitidos na forma de Mariprotocolo onette e os executa.

GeckoDriver em Selenium

Como baixar e instalar o GeckoDriver em Selenium

Gecko Driver estรก disponรญvel como um arquivo executรกvel que pode ser baixado no sistema. A seguir estรก a lista de etapas para baixar o driver gecko.

Passo 1 ) Selecione a versรฃo apropriada.
Nesta pรกgina https://github.com/mozilla/geckodriver/releases ,Selecione a versรฃo apropriada para download do GeckoDriver com base no seu sistema operacional

Baixe e instale o GeckoDriver em Selenium

Passo 2) Extraia o arquivo ZIP.
Assim que o download do arquivo ZIP for concluรญdo, extraia o conteรบdo do arquivo ZIP em uma pasta de arquivos

Baixe e instale o GeckoDriver em Selenium

Passo 3) Observe a localizaรงรฃo.
Observe o local onde vocรช extraiu o driver. A localizaรงรฃo serรก usada posteriormente para instanciar o driver.

Baixe e instale o GeckoDriver em Selenium

Maneiras de inicializar o GeckoDriver

Existem trรชs maneiras diferentes de inicializar o GeckoDriver.

1. Usando DesiredCapabilities

Primeiro, defina a propriedade do sistema para Gecko Driver.

Sintaxe:

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

Exemplo:

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

Em seguida, defina os recursos desejados.

Ajuda dos recursos desejados Selenium entender o nome do navegador, versรฃo e sistema operacional para executar os testes automatizados. Abaixo estรก o cรณdigo para definir o driver gecko usando a classe DesiredCapabilities.

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

Aqui estรก o cรณdigo completo

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

2. Usando a propriedade da marionete

O driver Gecko tambรฉm pode ser inicializado usando a propriedade marionette conforme abaixo

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

Se o driver gecko for inicializado usando o mรฉtodo acima, o cรณdigo para os recursos desejados รฉ nรฃo necessรกrio.

3. Usando FirefoxOpรงรตes

Mozilla Firefox a versรฃo 47+ possui driver de marionete como sistema legado. Aproveitando isso, o driver de marionete pode ser chamado usando Firefox Opรงรตes como abaixo

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

Cรณdigo para iniciar o Firefox usando o 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();
    }

}

Explicaรงรฃo do cรณdigo

Mรฉtodo @Before

Inicialmente, precisamos definir a propriedade do sistema do driver gecko para o local de download do arquivo geckdriver.exe. Precisamos definir a propriedade marionette como verdadeira para Selenium usar Mariprotocolo onette para se comunicar com o Gecko Driver. Finalmente, precisamos iniciar o Firefox instรขncia do navegador usando o objeto para Desired Capabilities.

As declaraรงรตes abaixo ajudam a realizar a tarefa acima.

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

@Mรฉtodo de teste

Estamos navegando para o URL especificado pelo usuรกrio usando o mรฉtodo โ€œgetโ€ integrado fornecido por Selenium motorista web. A declaraรงรฃo abaixo ajuda a conseguir o mesmo.

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

Mรฉtodo @Depois

Finalmente, estamos fechando a instรขncia do navegador usando o mรฉtodo quit.

driver.quit();

Modifique um script de nรฃo Gecko para Gecko

Script de driver nรฃo gecko usado antes Selenium 3 foi direto. Precisamos criar uma instรขncia de Firefox driver e use a variรกvel de instรขncia.

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

}

Para converter para gecko, basta adicionar uma linha de cรณdigo

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

    }

Exceรงรตes comuns ocorreram ao usar o Gecko Driver

A seguir estรก uma lista de exceรงรตes comuns que ocorrem durante o uso do Gecko Driver e com resoluรงรฃo.

Esta exceรงรฃo ocorre quando o usuรกrio tenta instanciar Firefox driver sem definir a propriedade do sistema para o driver gecko. Isso geralmente รฉ feito por iniciantes para Selenium que nรฃo estรฃo cientes das alteraรงรตes feitas a partir de Selenium 3 a Selenium Versรตes prรฉvias.

A resoluรงรฃo para a exceรงรฃo acima รฉ definir a propriedade do sistema para o driver gecko com a localizaรงรฃo do arquivo geckodriver.exe conforme abaixo

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

Observe que vocรช precisa definir a propriedade do driver gecko antes de criar uma instรขncia do Mozilla Firefox motorista.

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

Esta exceรงรฃo geralmente ocorre quando Firefox versรฃo foi atualizada para a versรฃo mais recente. A resoluรงรฃo para esta exceรงรฃo รฉ atualizar o arquivo jar do Selenium e o driver gecko para a versรฃo mais recente e usรก-los.

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

Esta exceรงรฃo ocorre devido a problemas de compatibilidade entre Selenium e motorista Gecko. O driver Gecko funciona com Firefox versรฃo 47 ou superior. Isso pode ser resolvido atualizando Firefox versรฃo para 47 ou superior.

WebDriver Exception: Connection Refused

Esta exceรงรฃo รฉ a mensagem gerada quando o driver web nรฃo consegue estabelecer uma conexรฃo com Firefox. Pode ser resolvido usando qualquer uma das seguintes tรฉcnicas.

  • Uso driver.quit() mรฉtodo para destruir instรขncias anteriores do driver da web
  • Limpe o cache do navegador antes de executar seus testes automatizados
  • Limpe o espaรงo de trabalho do projeto dentro Eclipse IDE
  • Sempre use a versรฃo mais recente do driver Selenium gecko e a versรฃo mais recente do Firefox navegador

Vantagem de usar Gecko Driver

Selenium Webdriver versรฃo 2.53 nรฃo รฉ compatรญvel com Mozilla Firefox versรฃo 47.0+. O Firefox driver usado em versรตes anteriores do Mozilla Firefox serรก descontinuado e apenas a implementaรงรฃo do GeckoDriver serรก usada. Conseqรผentemente, os testadores sรฃo forรงados a usar GeckoDriver se quiserem executar testes automatizados no Mozilla Firefox versรฃo 47.0+. Mas a grande questรฃo โ€“ qual รฉ a vantagem?

A principal vantagem de usar o GeckoDriver em oposiรงรฃo ao padrรฃo Firefox motorista รฉ Compatibilidade. GeckoDriver usa Protocolo WebDriver W3C para se comunicar com Selenium. W3C รฉ um padrรฃo universalmente definido para Web Driver. Isso significa Selenium Desenvolvedores (Pessoas que codificam Selenium base) nรฃo precisa criar uma nova versรฃo do Web Driver para cada versรฃo do navegador. O mesmo Web Driver pode ser usado para mรบltiplas versรตes de navegador. Portanto, o GeckoDriver รฉ preferido em comparaรงรฃo com a implementaรงรฃo anterior do Firefox motorista.

Resuma esta postagem com: