Baixe Geckodriver: como instalar Firefox Driver para Selênio

O que é GeckoDriver no Selenium?

O termo Gecko significa um mecanismo de navegador da Web embutido no Mozilla Firefox browser. O driver Gecko atua como um proxy entre clientes habilitados para Web Driver(Eclipse, Netbeans, etc.) e Mozilla Firefox browser. Resumindo, o driver Gecko atua como um elo entre os testes do Selenium Web Driver e o Mozilla Firefox browser.

Antes do Selenium 3, Mozilla Firefox browser era o navegador padrão do Selenium. Após o 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 Marionette. Firefox compreenderá os comandos transmitidos na forma do protocolo Marionette e os executará.

GeckoDriver em Selênio

Como baixar e instalar o GeckoDriver no Selenium

Gecko Driver está disponível como um arquivo executável que pode ser baixado no sistema. O seguintewing 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 GeckoDriver no 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 GeckoDriver no Selenium

Passo 3) Observe a localização.
Observe o local onde você extraiu o driver. A localização será usada later para instanciar o driver.

Baixe e instale GeckoDriver no 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.

Os recursos desejados ajudam o Selenium a entender o nome do navegador, a versão e o sistema operacional para executar os testes automatizados. Abaixo está o código para configurar 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 lançamento 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("http://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 true para que o Selenium use o protocolo Marionette para se comunicar com o Gecko Driver. Finalmente, precisamos iniciar o Firefox browser instância 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 pelo driver da web Selenium. A declaração abaixo ajuda a conseguir o mesmo.

driver.get("http://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

O script de driver não gecko usado antes do Selenium 3 era simples. 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

Following é 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 no Selenium que não estão cientes das alterações feitas do Selenium 3 para as versões anteriores do Selenium.

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 o driver Selenium e 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 um dos seguinteswing técnicas.

  • Use 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 browser

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 que os desenvolvedores do Selenium (pessoas que codificam a base do Selenium) não precisam 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.