O que é o driver Gecko?
O termo Gecko significa um mecanismo de navegador da Web embutido no navegador Mozilla Firefox. O driver Gecko atua como um proxy entre os clientes habilitados para o driver da Web (Eclipse, Netbeans, etc.) e o navegador Mozilla Firefox. Resumindo, o driver Gecko atua como um link entre os testes do Selenium Web Driver e o navegador Mozilla Firefox.
Antes do Selenium 3, o navegador Mozilla Firefox era o navegador padrão do Selenium. Depois do Selenium 3, os testadores precisam inicializar o script para usar o Firefox usando o GeckoDriver explicitamente. O Selenium usa o protocolo W3C Webdriver para enviar solicitações ao GeckoDriver, que as traduz em um protocolo chamado Marionette. O Firefox entenderá os comandos transmitidos na forma do protocolo Marionette e os executará.
Vantagem de usar o driver Gecko
Selenium Webdriver versão 2.53 não é compatível com Mozilla Firefox versão 47.0+. O driver do Firefox usado em versões anteriores do Mozilla Firefox será descontinuado e apenas a implementação do GeckoDriver será usada. Portanto, os testadores são forçados a usar o 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 driver padrão do Firefox é a compatibilidade . O GeckoDriver usa o protocolo W3C WebDriver para se comunicar com o Selenium. W3C é um padrão definido universalmente 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 driver da Web para cada versão do navegador. O mesmo driver da Web pode ser usado para várias versões de navegador. Portanto, o GeckoDriver é o preferido em comparação com a implementação anterior do driver do Firefox.
Baixe e instale o driver Gecko:
O 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.
Etapa 1) Nesta página https://github.com/mozilla/geckodriver/releases, selecione a versão apropriada para o download do GeckoDriver com base em seu sistema operacional
Etapa 2) Assim que o download do arquivo ZIP for concluído, extraia o conteúdo do arquivo ZIP em uma pasta de arquivos
Etapa 3) Observe o local onde você extraiu o driver. A localização será usada posteriormente para instanciar o driver.
Maneiras de inicializar o GeckoDriver:
Existem três maneiras diferentes de inicializar o GeckoDriver.
1. Usando DesiredCapabilities:
Primeiro, defina a propriedade do sistema para o driver Gecko.
Sintaxe:
System.setProperty ("webdriver.gecko.driver", "Caminho para o arquivo geckdriver.exe");
Exemplo:
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Em seguida, defina as capacidades desejadas.
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 definir o driver gecko usando a classe DesiredCapabilities.
Recursos de DesiredCapabilities = DesiredCapabilities.firefox ();abilities.setCapability ("marionette", true);
Aqui está o código completo
System.setProperty ("webdriver.gecko.driver", driverPath);Recursos de DesiredCapabilities = DesiredCapabilities.firefox ();abilities.setCapability ("marionette", true);driver = novo FirefoxDriver (recursos);
2. Usando a propriedade da marionete:
O driver Gecko também pode ser inicializado usando a propriedade marionette como 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 será necessário.
3. Usando FirefoxOptions:
Mozilla Firefox versão 47+ possui um driver marionette como sistema legado. Aproveitando isso, o driver marionette pode ser chamado usando as opções do Firefox conforme abaixo
Opções FirefoxOptions = 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";driver público do WebDriver;@Antespublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Recursos de DesiredCapabilities = DesiredCapabilities.firefox ();abilities.setCapability ("marionette", true);driver = novo FirefoxDriver (recursos);}@Testepublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Depois depublic 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 driver Gecko. Finalmente, precisamos iniciar a instância do navegador Firefox usando o objeto para Recursos desejados.
As declarações abaixo ajudam a realizar a tarefa acima.
System.setProperty ("webdriver.gecko.driver", driverPath);Recursos de DesiredCapabilities = DesiredCapabilities.firefox ();abilities.setCapability ("marionette", true);driver = novo FirefoxDriver (recursos);
@Método de teste:
Estamos navegando para a URL especificada pelo usuário usando o método "get" embutido fornecido pelo driver da web Selenium. A declaração abaixo ajuda a conseguir o mesmo.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@ Após o método:
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 do driver Firefox e usar a variável de instância.
@Antespublic void startBrowser () {driver = novo FirefoxDriver ();}
Para converter para lagartixa, você precisa simplesmente adicionar uma linha de código
@Antespublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");driver = novo FirefoxDriver ();}
Exceções comuns ocorreram durante o uso do driver Gecko:
A seguir está uma lista de exceções comuns que ocorrem durante o uso do driver Gecko e com resolução.
1. O caminho para o executável do driver deve ser definido pela propriedade de sistema webdriver.gecko.driver:
Esta exceção ocorre quando o usuário tenta instanciar o driver do Firefox sem definir a propriedade do sistema para o driver gecko. Isso geralmente é feito por iniciantes no Selenium que não estão cientes das mudanças feitas nas versões anteriores do Selenium 3.
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 driver Mozilla Firefox.
2. Exceção do Firefox não conectado:
org.openqa.selenium.firefox.NotConnectedException: Não foi possível conectar ao host 127.0.0.1 na porta 7055 após 45.000 ms.
Essa exceção geralmente ocorre quando a versão do Firefox foi atualizada para a versão mais recente. A resolução para essa exceção é atualizar o arquivo jar selênio e o driver gecko para a versão mais recente e usar o mesmo.
3. Exceção de sessão não criada:
org.openqa.selenium.SessionNotCreatedException: Não foi possível criar uma nova sessão remota.
Esta exceção ocorre devido a problemas de compatibilidade entre os drivers Selenium e Gecko. O driver Gecko funciona com o Firefox versão 47 ou superior. Isso pode ser resolvido atualizando a versão do Firefox para 47 ou superior.
4. Exceção de conexão recusada:
Exceção WebDriver: conexão recusada
Esta exceção é a mensagem gerada quando o driver da web não consegue estabelecer uma conexão com o Firefox. Isso pode ser resolvido usando qualquer uma das seguintes técnicas.
- Use o método driver.quit () para destruir as instâncias anteriores do driver da web
- Limpe o cache do navegador antes de executar seus testes automatizados
- Limpe a área de trabalho do projeto dentro do Eclipse IDE
- Sempre use a versão mais recente do driver selenium gecko e a versão mais recente do navegador Firefox