Selênio do driver Gecko (marionete): Baixe, instale, use com o Firefox

Índice:

Anonim

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