Selenium Tutorial de grade: configurar um hub e um nó (exemplo)

O que é o Selenium Grade?

Selenium Grade É uma parte da Selenium Suíte especializada na execução de vários testes em diferentes navegadores, sistemas operacionais e máquinas em paralelo. Isso é conseguido roteando os comandos de instâncias remotas do navegador onde um servidor atua como um hub. Um usuário precisa configurar o servidor remoto para executar os testes.

Selenium A Grade tem 2 versões - a Grade 1 mais antiga e a Grade 2 mais recente. Vamos nos concentrar apenas na Grade 2 porque a Grade 1 está gradualmente sendo obsoleta pelo Selenium Equipe.

Selenium Grade Archiarquitetura

Selenium Grid tem um hub e um nó Archiarquitetura.

Selenium Grade Archiarquitetura
Selenium Grade Archiarquitetura

Hub

  • O hub é o ponto central onde você carrega seus testes.
  • Deve haver apenas um hub em uma grade.
  • O hub é iniciado apenas em uma única máquina, digamos, um computador cujo sistema operacional é Windows 7 e cujo navegador é o IE.
  • A máquina que contém o hub é onde os testes serão executados, mas você verá o navegador sendo automatizado no nó.

Nodes

  • Os nós são os Selenium instâncias que executarão os testes que você carregou no hub.
  • Pode haver um ou mais nós em uma grade.
  • Os nós podem ser lançados em várias máquinas com diferentes plataformas e navegadores.
  • As máquinas que executam os nós não precisam ser da mesma plataforma do hub.

Selenium Grid usa um conceito hub-node onde você executa o teste apenas em uma única máquina chamada hub, mas a execução será feita por máquinas diferentes chamadas nós

Como configurar Selenium Grade?

Nesta seção, você usará 2 máquinas. A primeira máquina será o sistema que executará o hub enquanto a outra máquina executará um nó. Para simplificar, vamos chamar a máquina onde o hub é executado como “Máquina A”, enquanto a máquina onde o nó é executado será “Máquina B”. Também é importante observar seus endereços IP. Digamos que a Máquina A tenha um endereço IP 192.168.1.3 enquanto a Máquina B tenha um IP 192.168.1.4.

Passo 1) Faça o download do Selenium Servidor de aqui.

Estabelecer Selenium Grade

Passo 2) Você pode colocar o Selenium Arquivo .jar do servidor em qualquer lugar do seu disco rígido. Mas, para os fins deste tutorial, coloque-o na unidade C da Máquina A e da Máquina B. Depois de fazer isso, você concluiu a instalação Selenium Grade. As etapas a seguir iniciarão o hub e o nó.

Passo 3)

  • Agora vamos lançar um hub. Vá para a Máquina A. Usando o prompt de comando, navegue até a raiz da unidade da Máquina A – C, porque esse é o diretório onde colocamos o Selenium Servidor.
  • No prompt de comando, digite java -jar selenium-server-standalone-2.30.0.jar -role hub
  • O hub deve ser lançado com sucesso. Seu prompt de comando deve ser semelhante à imagem abaixo.

Estabelecer Selenium Grade

Passo 4) Outra forma de verificar se o hub está funcionando é usando um navegador. Selenium O Grid, por padrão, usa a porta 4444 da Máquina A para sua interface web. Basta abrir um navegador e ir para http://localhost:4444/grid/console

Estabelecer Selenium Grade

Além disso, você pode verificar se a Máquina B pode acessar a interface web do hub iniciando um navegador lá e indo para onde “iporhostnameofmachineA” deve ser o endereço IP ou o nome do host da máquina onde o hub está sendo executado. Como o endereço IP da Máquina A é 192.168.1.3, no navegador da Máquina B você deve digitar http://192.168.1.3:4444/grid/console

Passo 5)

  • Agora que o hub já está configurado, vamos lançar um nó. Vá para a Máquina B e inicie um prompt de comando lá.
  • Navegue até a raiz da Unidade C e digite o código abaixo. Usamos o endereço IP 192.168.1.3 porque é onde o hub está funcionando. Também usamos a porta 5566, embora você possa escolher qualquer número de porta livre que desejar.
  • NOTA: Agora você deve fornecer o caminho para o driver Gecko se estiver usando Firefox. Aqui está o código atualizado que precisa ser usado
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566

Estabelecer Selenium Grade

  • Ao pressionar Enter, seu prompt de comando deve ser semelhante à imagem abaixo.

Estabelecer Selenium Grade

Passo 6) Vou ao Selenium Interface web de grade e atualize a página. Você deveria ver algo assim.

Estabelecer Selenium Grade

Neste ponto, você já configurou uma grade simples. Agora você está pronto para executar um teste remotamente na Máquina B.

Quando usar Selenium Grade?

Você deveria usar Selenium Grade quando você quiser fazer um ou ambos os seguintes:

  • Execute seus testes em diferentes navegadores, sistemas operacionais e máquinas, tudo ao mesmo tempo. Isso garantirá que o aplicativo que você está Ensaios é totalmente compatível com uma ampla variedade de combinações de navegador e sistema operacional.
  • Economize tempo na execução de seus conjuntos de testes. Se você configurar Selenium Grid para executar, digamos, 4 testes por vez, então você seria capaz de terminar todo o conjunto cerca de 4 vezes mais rápido.

Grade 1.0 versus Grade 2.0

A seguir estão as principais diferenças entre Selenium Grade 1 e 2.

Grade 1 Grade 2
Selenium A Grade 1 possui um controle remoto próprio, diferente do Selenium Servidor RC. São dois programas diferentes. Selenium A Grade 2 agora vem junto com o Selenium Arquivo jar do servidor
Você precisa instalar e configurar apache Formiga primeiro antes de poder usar a Grade 1. Você não precisa instalar o Apache Ant no Grid 2.
Só pode apoiar Selenium Comandos/scripts RC. Pode suportar ambos Selenium Scripts RC e WebDriver.
Você só pode automatizar um navegador por controle remoto. Um controle remoto pode automatizar até 5 navegadores.

Selenium a grade pode ser configurada de duas maneiras diferentes; um por meio da linha de comando e outro por meio do arquivo de configuração JSON.

Projetando scripts de teste que podem ser executados na grade

Para projetar scripts de teste que serão executados na grade, precisamos usar Capacidades Desejadas e os votos de RemoteWebDriver objetos.

  • Capacidades Desejadas é usado para definir o tipo de navegador e OS que iremos automatizar.
  • RemoteWebDriver é usado para definir em qual nó (ou máquina) nosso teste será executado.

Para usar o Capacidades Desejadas objeto, você deve primeiro importar este pacote

Projetando scripts de teste que podem ser executados na grade

Para usar o RemoteWebDriver objeto, você deve importar esses pacotes.

Projetando scripts de teste que podem ser executados na grade

Usando o objeto DesiredCapabilites

Vá para a interface web do Grid e passe o mouse sobre a imagem do navegador que deseja automatizar. Tome nota do plataforma, e os votos de nome do navegador mostrado pela dica de ferramenta.

Usando o objeto DesiredCapabilites

Neste caso, a plataforma é “XP” e o browserName é “Firefox. "

Usaremos a plataforma e o browserName em nosso WebDriver conforme mostrado abaixo (é claro que você precisa importar os pacotes necessários primeiro).

Usando o objeto DesiredCapabilites

Usando o objeto RemoteWebDriver

Importe os pacotes necessários para RemoteWebDriver e depois passe o objeto DesiredCapabilities que criamos acima como parâmetro para o objeto RemoteWebDriver.

Usando o objeto RemoteWebDriver

Executando um exemplo de caso de teste na grade

Abaixo está um WebDriver simples Teste código que você pode criar em Eclipse na Máquina A. Depois de executá-lo, a automação será realizada na Máquina B.

import org.openqa.selenium.*; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import java.net.MalformedURLException; 
import java.net.URL; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.testng.Assert;
import org.testng.annotations.*; 

public class Grid_2 {
 WebDriver driver;
 String baseUrl, nodeURL; 
 @BeforeTest 
 public void setUpWthrows MalformedURLException {
 baseUrl = "http://newtours.demoaut.com/";
 nodeURL = "http://192.168.1.4:5566/wd/hub"; 
 DesiredCapabilities capability = DesiredCapabilities.firefox();
 capability. setBrowserName("firefox");
 capability. setPlatform(Platform.XP);
 driver = new RemoteWebDriver(new URL(nodeURL), capability); 
} 
@AfterTest 
public void afterTest() {
 driver.quit(); 
 }
@Test 
public void simpleTest() { 
driver.get(baseUr1);
 Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } 
} 

O teste deve passar.

Executando um exemplo de caso de teste no Grid Executando um exemplo de caso de teste no Grid

Selenium configuração de grade usando arquivo JSON

JSON significa Javascript Notação de objeto. É um formato padrão usado para intercâmbio de dados entre o navegador e o servidor web. Selenium tem um arquivo de configuração JSON integrado que pode ser usado para configurar a grade Selenium.

Abaixo estão as etapas para configurar a grade Selenium usando o arquivo de configuração JSON.

Passo 1) Baixe o código do arquivo de configuração JSON usando o caminho abaixo

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json

Aqui está o código

{
	  "port": 4444,
	  "newSessionWaitTimeout": -1,
	  "servlets" : [],
	  "withoutServlets": [],
	  "custom": {},
	  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
	  "registryClass": "org.openqa.grid.internal.DefaultGridRegistry",
	  "throwOnCapabilityNotPresent": true,
	  "cleanUpCycle": 5000,
	  "role": "hub",
	  "debug": false,
	  "browserTimeout": 0,
	  "timeout": 1800
}

Passo 2) Copie e cole o código em um editor de texto como o Bloco de Notas com a extensão '.json'

Passo 3)Inicie o hub usando o comando abaixo usando o prompt de comando

java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json

OBSERVAÇÃO: Selenium arquivo jar independente e o arquivo json devem estar presentes no mesmo diretório

Passo 4) A tela abaixo aparecerá, indicando que o hub foi configurado com sucesso

Selenium Configuração de grade usando arquivo JSON

Passo 5) Abra o navegador da web e tente conectar-se ao URL abaixo

http://192.168.43.223:4444/grid/console

OBSERVAÇÃO: A URL pode variar de máquina para máquina. Deve ser usado o URL seguido de 'Os nós devem se registrar em' na tela acima.

Passo 6) A tela Grid Console aparecerá, indicando que o hub está instalado e funcionando

Selenium Configuração de grade usando arquivo JSON

Configurar NODES usando JSON

Passo 1) Faça download do arquivo de configuração de nó de amostra fornecido por Selenium usando o URL abaixo

https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

OBSERVAÇÃO: SE VOCÊ ESTIVER USANDO SELENIUM 3.0 OU ACIMA, O ARQUIVO JSON ABAIXO DEVE SER USADO

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json

Passo 2) Copie e cole o código em um editor de texto como o Bloco de Notas e salve o arquivo com a extensão ‘.json’

Passo 3)

Execute o comando abaixo no prompt de comando

Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json

OBSERVAÇÃO: Antes de executar o comando, certifique-se de que os drivers de cada um dos navegadores foram baixados no diretório da máquina local

Passo 4) A tela abaixo aparecerá quando a tecla Enter for pressionada

Configurar nós usando JSON

Passo 5) Navegue até o console da grade para verificar se os nós foram configurados com sucesso

Configurar nós usando JSON

Os navegadores são exibidos no console da grade. Portanto, podemos ter certeza de que os nós foram configurados com sucesso.

Exemplos de casos de teste ativados Selenium Rede:

 package com.objectrepository.demo;
 import org.openqa.selenium.*;
 import org.openqa.selenium.remote.DesiredCapabilities;
 import java.net.MalformedURLException;
 import java.net.URL;
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.testng.Assert;
 import org.testng.annotations.*;

 public class SeleniumGrid {

     WebDriver driver;
     String baseURL, nodeURL;

     @BeforeTest
     public void setUp() throws MalformedURLException {
         baseURL = "https://demo.guru99.com/test/guru99home/";
         nodeURL = "http://192.168.43.223:5566/wd/hub";
         DesiredCapabilities capability = DesiredCapabilities.chrome();
         capability.setBrowserName("chrome");
         capability.setPlatform(Platform.WIN10);
         driver = new RemoteWebDriver(new URL(nodeURL), capability);
     }

     @AfterTest
     public void afterTest() {
         driver.quit();
     }
     @Test
     public void sampleTest() {
         driver.get(baseURL);
         

         if (driver.getPageSource().contains("MOBILE TESTING")) {
             Assert.assertTrue(true, "Mobile Testing Link Found");
         } else {
             Assert.assertTrue(false, "Failed: Link not found");
         }

     }

 }

O código acima inicia o navegador Chrome e navega até o URL especificado na variável ‘baseURL’. Ele verificou que um link com o nome 'Mobile Testing' é exibido na página

O URL na variável 'nodeURL' pode ser modificado para refletir o endereço IP da máquina remota. O resultado do teste pode ser verificado no padrão TestNG relatório gerado

Resumo

  • Selenium A grade é usada para executar vários testes simultaneamente em diferentes navegadores e plataformas.
  • Grid usa o conceito hub-node.
  • O hub é o ponto central onde você carrega seus testes.
  • Os nós são os Selenium instâncias que executarão os testes que você carregou no hub.
  • Para instalar Selenium Grid, você só precisa baixar o Selenium Arquivo jar do servidor – o mesmo arquivo usado na execução Selenium Testes RC.
  • Existem duas maneiras de verificar se o hub está em execução: uma por meio do prompt de comando e a outra por meio de um navegador.
  • Para executar scripts de teste no Grid, você deve usar os objetos DesiredCapabilities e RemoteWebDriver.
  • DesiredCapabilites é usado para definir o tipo de navegador e sistema operacional que iremos automatizar.
  • RemoteWebDriver é usado para definir em qual nó (ou máquina) nosso teste será executado.

Boletim informativo diário Guru99

Comece o seu dia com as últimas e mais importantes notícias sobre IA entregues agora mesmo.