Selenium Tutorial de Grid: Configurar um Hub e um Nó

⚡ Resumo Inteligente

Selenium O Grid executa vários testes em diferentes navegadores, sistemas operacionais e máquinas em paralelo, usando uma arquitetura de hub e nós. O hub carrega os testes em uma máquina, enquanto os nós os executam em outras, permitindo uma cobertura mais rápida em vários navegadores por meio de configuração via linha de comando ou JSON.

  • 🧩 Grade definida: Executa testes em vários navegadores, sistemas operacionais e máquinas em paralelo por meio de um hub e nós.
  • 🎯 hub: Uma única máquina central onde você realiza os testes de carga; apenas um hub por grid.
  • 🖥️ Nodes: Uma ou mais máquinas que executam efetivamente os testes em diferentes plataformas.
  • ⚙️ Configuração: Lançar o Selenium Servidor JAR com -role hub e -role node, ou utilize um arquivo de configuração JSON.
  • 🧪 Scripts de teste: Use DesiredCapabilities e RemoteWebDriver para direcionar um navegador, sistema operacional e nó.
  • ⏱️ Quando usar: Verificações abrangentes de compatibilidade entre navegadores e sistemas operacionais, além de execução paralela mais rápida do conjunto de testes.

Selenium Tutorial de grade

O que é a 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 polo gastronómico, 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á Testes é 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 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 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 e tente conectar-se ao seguinte endereço: URL

http://192.168.43.223:4444/grid/console

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

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 seguinte URL

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 'base'URL' variável. Verificou se o link com o nome 'Teste Móvel' é exibido na página.

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

Perguntas Frequentes

O hub é a máquina central onde você carrega os testes e gerencia a grade. Os nós são as máquinas que executam os testes em combinações específicas de navegador e sistema operacional. Uma grade possui um hub e um ou mais nós.

O Grid 1 utiliza um controle remoto separado e requer o Apache Ant, suportando apenas Selenium Scripts RC e um navegador por controle. O Grid 2 vem incluído no pacote. Selenium Servidor JAR, não requer Ant e suporta scripts RC e WebDriver.

Crie um objeto DesiredCapabilities, defina seu browserName e plataforma e, em seguida, passe-o para um RemoteWebDriver apontado para o nó. URLA grade encaminha o teste para um nó correspondente ao navegador e ao sistema operacional.

A IA pode priorizar e paralelizar execuções de teste, prever testes instáveis, equilibrar a carga entre os nós e corrigir automaticamente localizadores quebrados. Isso reduz o tempo de execução e o esforço de manutenção em grandes grids que executam diversas combinações de navegador e sistema operacional.

Sim. As ferramentas de IA podem recomendar quantidades ideais de nós, gerar configurações JSON, dimensionar automaticamente grades de nuvem com base no comprimento da fila e detectar capacidade subutilizada, ajudando a otimizar o desempenho.ping As equipes executam grandes suítes de forma eficiente sem ajustes manuais.

Resuma esta postagem com: