Configurando uma grade de selênio para testes de selênio distribuído



Este blog ajudará você a entender a necessidade do Selenium Grid e seus benefícios. Leia para configurar seu primeiro Selenium Grid configurando hub e nós.

Os outros blogs nesta série de tutoriais do Selenium falam sobre a criação de casos de teste e a execução desses casos de teste em sequência e em paralelo. Portanto, a técnica final deixada para discussão é a execução de casos de teste em máquinas remotas. O Selenium Grid pode ser usado para executar esses testes em máquinas / hosts remotos. Portanto, esse é o tópico de discussão do blog de hoje.

  1. Por que e quando usar Selenium Grid?
  2. O que é Selenium Grid?
  3. Selênio Grade 1 vs. Selênio Grade 2
  4. Arquitetura da grade de selênio
  5. Construindo uma grade de selênio

Por que e quando usar a grade de selênio?

Existem muitos navegadores da web em uso hoje. Os usuários podem estar usando Chrome ou Firefox ou Safari ou Opera ou até mesmo Internet Explorer para ler este blog. Eles podem estar usando versões diferentes dos navegadores. Eles também podem estar executando esses navegadores em qualquer sistema operacional, seja Windows ou Mac ou Ubuntu ou qualquer outra distribuição do Linux.





E se os usuários estivessem vendo algo importante na Internet? Algo importante para o seu negócio. Você não gostaria de ir mais longe (testando o aplicativo da web) apenas para garantir que seus usuários e / ou clientes tenham a melhor experiência de usuário? Você faria, certo?

Bem, você deveria!



Mas a questão é: quão viável isso é? Você poderá gastar tempo testando seu aplicativo da web em todos os sistemas operacionais possíveis e em todos os navegadores disponíveis? Hmm, isso parece um pouco desafiador. É aqui que o Selenium Grid se encaixa no projeto e ajudaeconomize seu tempo e energia.

Além disso, surge mais uma questão: É viável configurar a infraestrutura da rede Selenium usando sistemas locais? Manter uma grade com todos os navegadores e sistemas operacionais necessários é um desafio. Para isso, existem várias plataformas online que fornecem um Selenium Grid online que você pode acessar para executar seus scripts de automação de selênio. Por exemplo, você pode usar LambdaTest . Possui mais de 2.000 ambientes de navegador nos quais você pode executar seus testes e realmente automatizar o teste cruzado do navegador.

O que é Selenium Grid?

Selenium Grid é outra ferramenta importante no conjunto de ferramentas Selenium. O Grid é capaz de coordenar testes WebDriver / testes RC que podem ser executados simultaneamente em vários navegadores da web ou podem ser iniciados em diferentes sistemas operacionais ou mesmo hospedados em diferentes máquinas.



grade funcionando - grade de selênioEntão, como isso funciona? A grade emprega uma arquitetura Hub-Node onde, há um Hub, que atua como mestre e um ou mais Nodes atuando como escravos.

O que isto significa é que se você tem um total de 100 jobs / testes que precisam ser executados, então os testes podem ser executados simultaneamente em 5 máquinas, onde cada máquina estará executando 20 testes. Na verdade, você pode executar esses testes em diferentes combinações de sistemas operacionais e navegadores. Cada máquina aqui pode ser de um sistema operacional diferente e dentro de cada sistema operacional, os testes podem ser realizados em navegadores diferentes.

Esse ato facilmente economizaria muito do seu tempo na execução do teste. Se você considerar o exemplo acima, podemos reduzir o tempo de execução para cerca de 1/5 do tempo total gasto para executar testes em uma única máquina.

Se você se lembra de meus blogs anteriores, mencionei inúmeras vezes que o Grid fazia parte do projeto Selenium desde seu início, ou seja, desde o Selenium v1. Selenium Grid também fazia parte do Selenium v2 e atualmente faz parte do Selenium v3. Não há muita diferença na v2 e v3 do Selenium Grid. No entanto, v1 tem muitas diferenças comparativamente. Então vamosentender as diferenças entre v1 e v2.

Selênio Grade 1 vs. Selênio Grade 2

A diferença fundamental entre o Grid v1.0 e v2.0 é que, RC foi usado no Grid 1 e WebDriver foi usado no Grid 2. A tabela abaixo explica as diferenças em detalhes.

Grade 1 Posição de largada 2
Requer Apache Ant para ser instaladoA instalação do Apache Ant não é necessária
Tem seu próprio controle remoto (diferente do servidor RC)Empacotado com arquivo jar do Selenium Server
Suporta apenas comandos Selenium RCSuporta scripts Selenium RC e WebDriver
Você pode automatizar apenas um navegador por controle remotoVocê pode automatizar até 5 navegadores por controle remoto


Agora que aprendemos as diferenças fundamentais entre as duas versões, vamos mergulhar fundo na grade de selênio.

Arquitetura da grade de selênio

Como mencionei anteriormente, as funções de grade com base em um hub e vários nós. Mas, o que são Hub e Nodes e o que eles fazem?

The Hub

Em qualquer configuração de grade, pode haver apenas um hub e esse será o ponto central dessa configuração de grade. Todos os testes que precisam ser executados devem ser carregados aqui. Apesar de os testes serem carregados aqui, eles serão executados apenas nos Nós. Podemos configurar qualquer máquina host para ser nosso hub, e ela coordenará as atividades de execução de teste em outros hosts.

Para que isso aconteça, precisamos primeiro configurar o hub e, em seguida, fazer com que outros nós se registrem no hub. Antes de entrar em muitos detalhes, deixe-me mostrar o comando para configurar o hub.

Configurando o Hub

Em primeiro lugar, você precisa baixar o arquivo JAR do servidor Selenium do site da Seleniumhq. O link é Aqui . Você também precisa se certificar de que o Java está instalado em seu sistema e as variáveis ​​de ambiente estão definidas.

Depois de fazer o download do arquivo jar, você precisa colocá-lo em um diretório apropriado. Para minha conveniência, fiz o download e coloquei na pasta Selenium na unidade C. Recomenda-se também fazer download do arquivo jar e colocá-lo em um diretório semelhante em todos os outros nós.

Para configurar o hub, você precisa executar o comando no prompt de comando do Windows. O comando está presente no snippet abaixo.

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

o selenium-server-standalone-3.4.0.jar é o nome do arquivo jar que baixei.
o -Função sinalizador é usado para definir essa máquina host específica como o hub. Ao clicar em Enter, você obterá a saída abaixo na tela.

o que é um método javascript

Caso você não tenha percebido a imagem acima, veja-a novamente. Diz ' -Nós devem se registrar em http://192.168.0.11:4444/grid/register ‘. Agora que o hub está configurado, precisamos configurar os nós e conectá-los a este hub.

192.168.0.11 é o endereço IP do hub e cada nó deve se conectar a este endereço IP. 4444 é o número da porta padrão na qual o Selenium Grid é hospedado e escuta as solicitações. Se algum outro serviço estiver sendo executado na porta 4444 e você quiser que o Selenium Grid seja hospedado em outra porta, você pode fazer isso especificando o -porta bandeira seguida do número da porta.

Os nós

Os nós são as máquinas host nas quais os testes são executados. Esses testes serão iniciados pelo Hub. O hub pode iniciar um ou mais nós em máquinas remotas ou na mesma máquina onde o próprio hub está localizado. Em cada um dos nós, diferentes sistemas operacionais podem ser inicializados e, em diferentes sistemas operacionais, diferentes versões do mesmo navegador ou diferentes navegadores podem ser iniciados.

Configurando os nós

Semelhante ao hub, você precisa primeiro fazer o download do arquivo Jar nas máquinas Node e colocá-lo na unidade C ou em qualquer outro diretório comum para sua conveniência. Você pode então executar o comando abaixo no prompt de comando do Windows. Se você estiver iniciando até mesmo o Node na mesma máquina de seu hub, será necessário executar o comando iniciando outro prompt de comando.

java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

Existem apenas algumas diferenças neste comando em comparação com o comando necessário para iniciar o hub.
-Dwebdriver.chrome.driver = E: chromedriver.exe é usado para definir o caminho do driver do navegador. Semelhante a definir o caminho do driver do navegador no código do WebDriver, você o especifica aqui para permitir que o Nó execute testes. Do Selenium v3 em diante, você precisa baixar o navegador do driver para Firefox. O driver do navegador para Firefox é o driver Gecko. No entanto, nas versões 1 e 2, você precisa definir o driver do navegador para todos os navegadores diferentes do Firefox.
-role node sinalizador é usado para definir essa máquina host específica como o nó.
-hub http://192.168.0.11:4444/grid/register informa o nó para se conectar ao hub usando o endereço IP do hub. Um ponto importante a ser observado é que se você estiver iniciando qualquer Nó na mesma máquina que o seu Hub, então você pode especificar ' -hub http: // localhost: 4444 / grid / register ‘No comando em vez do endereço IP do hub.

definindo o caminho da classe em java

Ao clicar em Enter, você obterá a saída abaixo no prompt de comando.

A essa altura, o Nó já estaria conectado ao Hub. Você pode verificar isso voltando ao prompt de comando usado para iniciar o hub e você notará a seguinte mensagem: ‘ Registrou um nó http://192.168.0.11:5555 ‘.

O endereço IP e o número da porta são os do seu nó. Como tenho meu Nó na mesma máquina que meu Hub, a porta usada para o Nó é 5555. Quando você o inicia em alguma outra máquina, a porta padrão será usada.

Ao iniciar o seguinte URL na máquina do seu hub, você obterá o status dos nós conectados ao seu hub. Veja a parte destacada na imagem abaixo.

Agora que sua grade do Selenium está configurada, você pode prosseguir para a execução de scripts de teste nos nós. Deixe-me enfatizar novamente que precisamos executar scripts em nosso hub e eles serão executados em nossos nós. O script usado para executar os testes é semelhante ao WebDrivertestes.

Construindo uma grade de selênio

Eu executei meu script no Eclipse IDE. A execução deste script depende de dois pacotes de biblioteca importantes. Eles são DesiredCapabilities objeto e RemoteWebDriver objeto.

DesiredCapabilities é usado para definir o tipo de navegador e o sistema operacional do nosso nó. Para importar o objeto DesiredCapabilities, use o código a seguir.

import org.openqa.selenium.remote.DesiredCapabilities

RemoteWebDriver é usado para selecionar o nó no qual queremos executar o teste. Para importar o objeto RemoteWebDriver, use as linhas de código abaixo.

import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver

Importei esses dois pacotes junto com o pacote de anotações TestNG para meu script, conforme mostrado no trecho de código abaixo. Importei anotações TestNG porque executei isso como um teste TestNG para o qual um relatório detalhado será gerado. Eu recomendo que você importe o mesmo conjunto de pacotes para o seu código.

Ao manobrar sobre os logotipos de qualquer navegador presente no console do Selenium Hub, você obterá detalhes como o browserName e a plataforma do nó que você deseja automatizar. A imagem também indica quantas instâncias dos navegadores posso abrir em meu nó. Posso configurar no máximo 5 instâncias do Chrome, 5 do Firefox e 1 do Internet Explorer. Esses detalhes estão presentes na imagem abaixo.

Você pode usar o código no snippet abaixo para configurar sua primeira grade.

pacote GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver public class TestGrid {driver estático WebDriver static String nodeUrl @BeforeTest public void setup () nodeUrl = 'http://192.168.0.11:5555/wd/hub' DesiredCapabilities capacity = DesiredCapabilities.chrome () functions.setBrowserName ('chrome') functions.setPlatform (Platform.WINDOWS) driver = new RemoteWebDriver (novo URL (nodeUrl ), capacidades)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

Dividi todo o script de teste em três anotações de teste. @BeforeTest, @Test e @AfterTest. Em @BeforeTest, usei os objetos DesiredCapablities e RemoteWebDriver para configurar meu Node. No @Test, pedi ao Nó para navegar até a página inicial da Edureka e declarar o título da página. Em @AfterTest, pedi ao Node para sair da instância do navegador.

Quando seu teste passar na execução, você obterá a saída abaixo.

18 de maio de 2017 3:09:07 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Dialeto detectado: OSS PASSED: simpleTest ===================== ============================== Teste padrão Testes executados: 1, Falhas: 0, Saltos: 0 ========== ========================================= =============== ====================================== Conjunto padrão Total de testes executados: 1, Falhas: 0, Saltos: 0 = ==================================================

Como isso é executado como um teste TestNG, você obterá um relatório de teste detalhado semelhante à captura de tela abaixo.

Se você não sabe o que é TestNG e como usar anotações de teste, então leia meu blog sobre como usar Selenium WebDriver com TestNG desta série de tutoriais do Selenium.

Você pode ver o vídeo abaixo para testemunhar uma demonstração de como construir uma grade de selênio. O instrutor que está entregando o vídeo explica os mesmos conceitos explicados neste blog.

Tutorial de grade de selênio para iniciantes | Tutorial do Selênio | Edureka

Então, isso nos leva ao final deste blog do Selenium Grid. Se você tiver alguma dúvida ou problema com qualquer código / conteúdo desta série de blog, deixe-os na seção de comentários abaixo e eu resolverei seu problema o mais rápido possível.

Se você deseja aprender Selenium e construir uma carreira no domínio de testes, confira nosso site interativo ao vivo online aqui, ele vem com suporte 24 horas por dia, 7 dias por semana para guiá-lo durante o período de aprendizado.

Tem alguma questão para nós? Mencione isso na seção de comentários e entraremos em contato com você.