geckodriver selenium tutorial
Tutorial do GeckoDriver Selenium: Aprenda a usar o driver Gecko (Marionette) no Selenium
Para entender o que é o GeckoDriver, inicialmente precisamos conhecer o Gecko e o motor de navegador da web. Este tutorial cobre quase todos os recursos envolvidos com o GeckoDriver, dando a você uma visão geral completa dele.
Então, para começar, vamos primeiro saber o que é Gecko e o que é um Web Browser Engine?
O que você aprenderá:
- O que é Gecko?
- O que é um mecanismo de navegador da Web?
- O que é GeckoDriver?
- Por que o Selenium precisa do GeckoDriver?
- Como usar o GeckoDriver no Projeto Selenium?
- GeckoDriver e TestNG
- Etapas para adicionar um caminho na variável ambiental PATH do sistema
- Problemas sem driver Gecko
- Informações adicionais sobre GeckoDriver
- Conclusão
- Leitura recomendada
O que é Gecko?
Gecko é um mecanismo de navegador da web. Existem vários aplicativos que requerem o Gecko. Especificamente, os aplicativos que são desenvolvidos pela Mozilla Foundation e pela Mozilla Corporation. O Gecko também é necessário para muitos projetos de software de código aberto. Gecko é escrito em C ++ e JavaScript.
As versões mais recentes também são escritas em Rust. O Gecko é um mecanismo de navegador gratuito e de código aberto.
O que é um mecanismo de navegador da Web?
O Web Browser Engine nada mais é do que um programa de software. A principal função deste programa é coletar o conteúdo (como HTML, XML, imagens) e formatar as informações (como CSS) e exibir esse conteúdo formatado na tela. O mecanismo do navegador da web também é chamado de mecanismo de layout ou mecanismo de renderização.
Aplicativos como navegadores da Web, clientes de e-mail, leitores de e-books, sistemas de ajuda on-line etc. precisam exibir conteúdo da web. E para exibir o conteúdo da web, o mecanismo do navegador da web é necessário e faz parte de todos esses aplicativos. Existem motores de navegador da web diferentes para cada navegador da web.
A tabela a seguir mostra os navegadores da web e quais mecanismos de navegador da web eles estão usando.
O Gecko é executado no seguinte sistema operacional sem emulação:
- janelas
- Mac OS
- Linux
- BSD
- Unix
Ele não pode ser executado em um sistema operacional Symbian.
O que é GeckoDriver?
GeckoDriver é um link de conexão ao navegador Firefox para o seu scripts em Selenium . GeckoDriver é um proxy que ajuda a se comunicar com os navegadores baseados no Gecko (por exemplo, Firefox), para os quais fornece API HTTP.
Por que o Selenium precisa do GeckoDriver?
O Firefox (versão 47 e superior) fez algumas alterações e, por alguns motivos de segurança, não permite que nenhum driver de terceiros interaja diretamente com os navegadores. Portanto, não podemos usar Selenium2 com as versões mais recentes do Firefox. Portanto, precisamos de Selenium3.
Selenium3 tem driver de marionete. O Selenium3 pode interagir diretamente com o navegador Firefox usando um proxy, que nada mais é do que o GeckoDriver.
Como usar o GeckoDriver no Projeto Selenium?
- Vamos considerar que você tem a versão mais recente do Selenium WebDriver e o navegador Firefox.
- Então baixe o GeckoDriver de aqui . Posteriormente, escolha a versão adequada para o seu computador.
- Extrair arquivos da pasta compactada
- Adicione as referências de bibliotecas Selenium3 em seu projeto por meio de Clique com o botão direito do mouse no projeto => Caminho de construção => Configurar caminho de construção => Bibliotecas => Adicionar Jars externos.
- Selecione Pasta Lib => Clique Clt + A => Clique Abrir .
- Depois de você clique para abrir , você verá a seguinte janela:
- Em seguida, clique em OK.
- Agora vamos escrever nosso código e usar a propriedade do sistema para especificar o caminho do GeckoDriver.
- Adicione a linha abaixo em seu código:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Como copiar o endereço do arquivo extraído. - (Pressione 'Shift' no teclado e clique com o botão direito do mouse no arquivo, você terá uma opção. Em seguida, 'Copiar endereço do arquivo'.))
** ( Neste caminho de cópia colada, certifique-se de que haja uma barra invertida dupla, caso contrário, o código terá um erro de sintaxe.)
Vamos dar um exemplo
Exemplo
Aqui está apenas um script simples, onde abrimos a página da web do Google em um navegador Firefox e verificamos o título da página.
Code1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Compreender o Código
# 1) import org.openqa.selenium.WebDriver- Aqui estamos importando todas as referências à interface do WebDriver. Mais tarde, essa interface WebDriver é necessária para instanciar um novo navegador.
# 2) import org.openqa.selenium.firefox.FirefoxDriver- Aqui estamos importando todas as referências à classe FirefoxDriver.
# 3) setProperty (String key, String value) - Aqui, estamos definindo a propriedade do sistema fornecendo o nome da propriedade que é chamada de Chave e seu caminho, que é chamado de Valor.
Chave - Nome da propriedade do sistema, ou seja webdriver.gecko.driver .
Valor - Endereço do arquivo exe do Gecko Driver.
# 4) Driver WebDriver = novo FirefoxDriver () - Nesta linha de código, estamos criando a variável de referência ‘driver’ do WebDriver e esta variável de referência é iniciada usando a classe FirefoxDriver. Um perfil do Firefox sem extensões e plug-ins será lançado com a instância do Firefox.
# 5) obter (“URL”) - Usando este método Get, podemos abrir o URL especificado no navegador. Este método Get é chamado usando a variável de referência do WebDriver, ou seja, driver. A string é passada para o método Get, o que significa que a URL do nosso aplicativo é passada para este método Get.
# 6) manage (). Window (). Maximize () - Usando esta linha de código, estamos maximizando a janela do navegador. Assim que o navegador abre o URL especificado, ele é maximizado usando esta linha.
# 7) getTitle () - Usando esta linha de código, seremos capazes de encontrar o título da página da web. Este método também é chamado usando a variável de referência 'driver' do WebDriver. Estamos salvando este título na variável String ‘appTitle’.
# 8) Comparação - Aqui estamos comparando o appTitle (que passará driver.getTitle () método) e o expTitle (que é “Google”) usando a instrução If. É apenas uma declaração If-else simples. Quando a condição “Se” for satisfeita, estamos imprimindo a mensagem “Verificação bem-sucedida”, caso contrário, imprimindo a mensagem “Falha na verificação”.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Esta linha de código fecha o navegador. Esta linha fecha apenas a janela atual.
# 10) System.exit (0) - Este método de linha de código é usado para encerrar a execução da Java Virtual Machine. Portanto, é recomendável fechar todas as janelas ou arquivos abertos antes desta linha.
GeckoDriver e TestNG
Não há muita diferença no código, mas aqui estou adicionando um código apenas para sua referência.
EXEMPLO:
Vamos ver o exemplo. Nosso exemplo é abrir a página da web do Google.com, obter seu título e imprimi-lo.
Código 2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
Pontos a serem lembrados ao escrever o código TestNG:
# 1) Use o método System.setProperty (String key, String value) dentro da função f () igual ao exemplo anterior. Nesse exemplo, nós o escrevemos na função principal. No entanto, no TestNG, não há funções main (). Se você escrever fora da função, obterá um erro de sintaxe.
#dois) A segunda coisa mais importante a lembrar é System.exit (0). Não há necessidade de adicionar esta linha de código em seu script TestNG. Há uma razão para isso que é - depois de executar o script TestNG, a pasta de saída é gerada onde você pode ver os relatórios e resultados gerados, se você adicionar System.exit (0) em seu script, esta pasta (pasta de saída) não obterá gerado e você não poderá ver os relatórios.
Etapas para adicionar um caminho na variável ambiental PATH do sistema
- No sistema Windows, clique com o botão direito em Meu Computador ou Este PC.
- Selecione Propriedades.
- Selecione as configurações avançadas do sistema.
- Clique no botão Variáveis de ambiente.
- Em Variáveis do sistema, selecione PATH.
- Clique no botão Editar.
- Clique no botão Novo
- Cole o caminho do arquivo GeckoDriver.
- Clique OK.
Problemas sem driver Gecko
Você pode enfrentar alguns problemas como os apresentados a seguir.
# 1) Se estiver usando uma versão antiga do Firefox e Selenium3, você receberá a seguinte exceção:
como entrar no teste de qa
Exceção no thread “main” java.lang.IllegalStateException
#dois) Se você estiver usando a versão mais recente do Firefox e uma versão antiga do Selenium, obterá a seguinte exceção:
org.openqa.selenium.firefox.NotConnectedException : Não é possível conectar ao host 127.0.0.1 na porta 7055 após 45000ms
# 3) Se você estiver usando a versão mais recente do Firefox e WebDriver, mas não estiver usando o GeckoDriver, obterá a seguinte exceção:
Exceção no thread “main” java.lang.IllegalStateException: O caminho para o executável do driver deve ser definido pela propriedade de sistema webdriver.gecko.driver; Para mais informações, veja aqui .A versão mais recente pode ser baixada de aqui .
Informações adicionais sobre GeckoDriver
Como sabemos, GeckoDriver é um proxy que ajuda a se comunicar com navegadores baseados em Gecko (por exemplo, Firefox), para os quais fornece API HTTP.
Esta API HTTP pode ser entendida usando o protocolo WebDriver. Existem alguns nós no protocolo WebDriver que incluem extremidade local, extremidade remota, nó intermediário e nó de extremidade. A comunicação entre esses nós é descrita no protocolo WebDriver.
A extremidade local é o lado do cliente do protocolo WebDriver. Extremidade remota significa lado do servidor do protocolo WebDriver. O nó intermediário desempenha a função de um proxy. O nó de extremidade é colocado em vigor por um agente do usuário ou programa semelhante.
Comandos e respostas enviados pelo WebDriver ao GeckoDriver são traduzidos para o protocolo Marionette e então transferidos para o Marionette Driver pelo GeckoDriver. Portanto, concluímos dizendo que o GeckoDriver está atuando como um proxy entre esses dois WebDriver e Marionette.
O Marionette é dividido em 2 partes, que é a parte do servidor e a parte do cliente. Os comandos enviados pela parte cliente são executados pela parte servidor.
Este trabalho de execução de comando é realizado dentro do navegador. Marionette nada mais é do que uma combinação de um componente gecko (que é um servidor Marionette) e um componente externo (que é chamado de Marionette Client). GeckoDriver é escrito na linguagem de programação Rust.
Conclusão
GeckoDriver é um fator intermediário entre seus scripts Selenium e navegadores baseados no Gecko como o Firefox.
GeckoDriver é um proxy para se comunicar com navegadores baseados no Gecko ( Por exemplo. Raposa de fogo). O Firefox (versão 47 e superior) fez algumas alterações, o que impediu o suporte de drivers de terceiros para interagir diretamente com os navegadores.
Este é o principal motivo pelo qual precisamos usar o GeckoDriver. A maneira mais fácil de usar o GeckoDriver em seu script é implementar o uso de Propriedade System.set. (System.setProperty (“webdriver.gecko.driver”, ”Caminho do arquivo do driver Gecko”)).
Você é novo no GeckoDriver? Você aprendeu algo novo hoje neste GeckoDriver Selenium? Ou você tem algo interessante para compartilhar conosco sobre o GeckoDriver? Sinta-se à vontade para expressar suas opiniões na seção de comentários abaixo.
Leitura recomendada
- Tutorial Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Introdução ao Selenium WebDriver - Selenium Tutorial # 8
- Selenium Encontrar Elemento por Tutorial de Texto com Exemplos
- Implementação do nosso primeiro script WebDriver - Selenium WebDriver Tutorial # 10
- Como lidar com alertas / pop-ups no Selenium WebDriver - Tutorial do Selenium nº 16
- Configuração e instalação completas do WebDriver com Eclipse - Selenium Tutorial # 9
- Tutoriais detalhados do Eclipse para iniciantes
- Scripts Eficientes do Selenium e Cenários de Solução de Problemas - Tutorial # 27 do Selenium