Selenium Tutorial de Grid: Configuración de un Hub y un Nodo

⚡ Resumen inteligente

Selenium Grid ejecuta múltiples pruebas en paralelo en distintos navegadores, sistemas operativos y máquinas mediante una arquitectura de concentrador y nodos. El concentrador carga las pruebas en una máquina, mientras que los nodos las ejecutan en otras, lo que permite una cobertura más rápida entre navegadores mediante la configuración por línea de comandos o JSON.

  • 🧩 Cuadrícula definida: Realiza pruebas en paralelo en diferentes navegadores, sistemas operativos y máquinas a través de un concentrador y nodos.
  • 🎯 Buje: La única máquina central donde se realizan las pruebas de carga; solo un hub por red.
  • 🖥️ nodos: Una o más máquinas que ejecutan las pruebas en diferentes plataformas.
  • ⚙️ Configuración: Inicie el Selenium Archivo JAR del servidor con los roles -role hub y -role node, o utilice un archivo de configuración JSON.
  • 🧪 Guiones de Prueba: Utilice DesiredCapabilities y RemoteWebDriver para especificar un navegador, un sistema operativo y un nodo.
  • 🇧🇷 Cuándo usar: Comprobaciones exhaustivas de compatibilidad con sistemas operativos de navegador y una ejecución de conjuntos de pruebas en paralelo más rápida.

Selenium Tutorial de cuadrícula

¿Qué es Selenium Rejilla?

Selenium Cuadrícula Es una parte del Selenium Suite que se especializa en ejecutar múltiples pruebas en diferentes navegadores, sistemas operativos y máquinas en paralelo. Se logra enrutando los comandos de instancias remotas del navegador donde un servidor actúa como concentrador. Un usuario necesita configurar el servidor remoto para poder ejecutar las pruebas.

Selenium Grid tiene 2 versiones: el Grid 1 más antiguo y el Grid 2 más nuevo. Solo nos centraremos en el Grid 2 porque el Grid 1 está quedando obsoleto gradualmente. Selenium Equipo.

Selenium Cuadrícula Architectura

Selenium Grid tiene un centro y un nodo Architectura.

Selenium Cuadrícula Architectura
Selenium Cuadrícula Architectura

Circuladores

  • El centro es el punto central donde carga sus pruebas.
  • Sólo debería haber un centro en una cuadrícula.
  • El concentrador se inicia sólo en una única máquina, por ejemplo, una computadora cuyo sistema operativo es Windows 7 y cuyo navegador es IE.
  • La máquina que contiene el centro es donde se ejecutarán las pruebas, pero verá que el navegador se automatiza en el nodo.

Nodes

  • Los nodos son los Selenium instancias que ejecutarán las pruebas que cargó en el hub.
  • Puede haber uno o más nodos en una cuadrícula.
  • Los nodos se pueden iniciar en varias máquinas con diferentes plataformas y navegadores.
  • No es necesario que las máquinas que ejecutan los nodos sean de la misma plataforma que la del centro.

Selenium Grid utiliza un concepto de nodo concentrador en el que solo se ejecuta la prueba en una única máquina llamada Placa del Motor, pero la ejecución la realizarán diferentes máquinas llamadas nodos.

Como instalar Selenium Rejilla?

En esta sección, utilizará 2 máquinas. La primera máquina será el sistema que ejecutará el concentrador, mientras que la otra máquina ejecutará un nodo. Para simplificar, llamemos a la máquina donde se ejecuta el concentrador como "Máquina A", mientras que la máquina donde se ejecuta el nodo será "Máquina B". También es importante tener en cuenta sus direcciones IP. Digamos que la máquina A tiene una dirección IP de 192.168.1.3 mientras que la máquina B tiene una IP de 192.168.1.4.

Paso 1) Descargue nuestra Selenium Servidor de aquí.

Instalar Selenium Cuadrícula

Paso 2) Puedes colocar el Selenium Archivo .jar del servidor en cualquier lugar de su disco duro. Pero para los fines de este tutorial, colóquelo en la unidad C de la Máquina A y de la Máquina B. Después de hacer esto, habrá terminado de instalar. Selenium Cuadrícula. Los siguientes pasos iniciarán el concentrador y el nodo.

Paso 3)

  • Ahora vamos a lanzar un centro. Vaya a la Máquina A. Usando el símbolo del sistema, navegue hasta la raíz de la unidad C de la Máquina A, porque ese es el directorio donde colocamos el Selenium Server.
  • En el símbolo del sistema, escriba java -jar selenium-servidor-independiente-2.30.0.jar -role hub
  • El centro debería iniciarse correctamente. Su símbolo del sistema debería verse similar a la imagen a continuación.

Instalar Selenium Cuadrícula

Paso 4) Otra forma de verificar si el concentrador se está ejecutando es mediante un navegador. Selenium Grid, de forma predeterminada, utiliza el puerto 4444 de la máquina A para su interfaz web. Simplemente abra un navegador y vaya a http://localhost:4444/grid/console

Instalar Selenium Cuadrícula

Además, puede verificar si la Máquina B puede acceder a la interfaz web del concentrador iniciando un navegador allí y yendo a donde "iporhostnameofmachineA" debe ser la dirección IP o el nombre de host de la máquina donde se ejecuta el concentrador. Dado que la dirección IP de la máquina A es 192.168.1.3, en el navegador de la máquina B debe escribir http://192.168.1.3:4444/grid/console

Paso 5)

  • Ahora que el centro ya está configurado, lanzaremos un nodo. Vaya a la Máquina B e inicie un símbolo del sistema allí.
  • Navegue hasta la raíz de la Unidad C y escriba el siguiente código. Usamos la dirección IP 192.168.1.3 porque es allí donde se ejecuta el concentrador. También utilizamos el puerto 5566, aunque puede elegir cualquier número de puerto libre que desee.
  • NOTA: Ahora debe indicar la ruta al controlador Gecko si usa Firefox. Aquí hay un código actualizado que debe usarse.
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

Instalar Selenium Cuadrícula

  • Cuando presiona Enter, su símbolo del sistema debería ser similar a la imagen a continuación.

Instalar Selenium Cuadrícula

Paso 6) Vaya a la Selenium Interfaz web Grid y actualice la página. Debería ver algo como esto.

Instalar Selenium Cuadrícula

En este punto, ya has configurado una cuadrícula simple. Ahora está listo para ejecutar una prueba de forma remota en la Máquina B.

Cuándo usar Selenium Rejilla?

Deberías usar Selenium Cuadrícula cuando desee realizar una o ambas de las siguientes acciones:

  • Ejecute sus pruebas en diferentes navegadores, sistemas operativos y máquinas, todo al mismo tiempo. Esto asegurará que la aplicación que está Pruebas es totalmente compatible con una amplia gama de combinaciones de navegador y sistema operativo.
  • Ahorre tiempo en la ejecución de sus suites de pruebas. Si configuras Selenium Grid para ejecutar, digamos, 4 pruebas a la vez, luego podrá terminar todo el conjunto aproximadamente 4 veces más rápido.

Cuadrícula 1.0 versus Cuadrícula 2.0

A continuación se presentan las principales diferencias entre Selenium Cuadrícula 1 y 2.

Cuadrícula 1 Cuadrícula 2
Selenium Grid 1 tiene su propio control remoto diferente al Selenium Servidor RC. Son dos programas diferentes. Selenium Grid 2 ahora viene incluido con el Selenium archivo jar del servidor
Necesitas instalar y configurar APACHE Ant primero antes de poder usar Grid 1. No es necesario instalar Apache Ant en Grid 2.
solo puedo apoyar Selenium Comandos/scripts RC. Puede soportar ambos Selenium Scripts RC y WebDriver.
Sólo puedes automatizar un navegador por mando a distancia. Un control remoto puede automatizar hasta 5 navegadores.

Selenium La cuadrícula se puede configurar de dos maneras diferentes; uno a través de la línea de comando y el otro a través del archivo de configuración JSON.

Diseño de scripts de prueba que puedan ejecutarse en la red

Para diseñar scripts de prueba que se ejecutarán en el grid, necesitamos usar Capacidades deseadas y conectar RemoteWebDriver objetos.

  • Capacidades deseadas Se utiliza para establecer el tipo de cada navegador y OS que automatizaremos.
  • RemoteWebDriver se utiliza para establecer contra qué nodo (o máquina) se ejecutará nuestra prueba.

Para usar el Capacidades deseadas objeto, primero debes importar este paquete

Diseño de scripts de prueba que puedan ejecutarse en la red

Para usar el RemoteWebDriver objeto, debe importar estos paquetes.

Diseño de scripts de prueba que puedan ejecutarse en la red

Usando el objeto DesiredCapabilites

Vaya a la interfaz web de Grid y coloque el cursor sobre una imagen del navegador que desea automatizar. Toma nota de la plataforma, y conectar nombre del navegador mostrado por la información sobre herramientas.

Usando el objeto DesiredCapabilites

En este caso, la plataforma es “XP” y el nombre del navegador es “Firefox."

Usaremos la plataforma y el nombre del navegador en nuestro WebDriver como se muestra a continuación (por supuesto, primero debe importar los paquetes necesarios).

Usando el objeto DesiredCapabilites

Usando el objeto RemoteWebDriver

Importe los paquetes necesarios para RemoteWebDriver y luego pase el objeto DesiredCapabilities que creamos anteriormente como parámetro para el objeto RemoteWebDriver.

Usando el objeto RemoteWebDriver

Ejecución de un caso de prueba de muestra en Grid

A continuación se muestra un WebDriver simple Prueba código que puedes crear en Eclipse en la Máquina A. Una vez que lo ejecute, la automatización se realizará en la 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()); }
}

La prueba debería pasar.

Ejecución de un caso de prueba de muestra en The Gride Ejecución de un caso de prueba de muestra en The Gride

Selenium configuración de la red usando el archivo JSON

JSON significa Javascript Notación de objetos. Es un formato estándar utilizado para el intercambio de datos entre el navegador y el servidor web. Selenium tiene un archivo de configuración JSON incorporado que se puede usar para configurar Selenium Grid.

A continuación se muestran los pasos para configurar Selenium Grid utilizando el archivo de configuración JSON.

Paso 1) Descargue el código para el archivo de configuración JSON usando la siguiente ruta

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

Aqui esta el codigo

{
	  "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
}

Paso 2) Copie y pegue el código en un editor de texto como el Bloc de notas con la extensión '.json'

Paso 3) Inicie el centro usando el siguiente comando usando el símbolo del sistema

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

NOTA: Selenium El archivo jar independiente y el archivo json deben estar presentes en el mismo directorio.

Paso 4) Aparecerá la siguiente pantalla que indica que el concentrador se configuró correctamente

Selenium Configuración de red mediante archivo JSON

Paso 5) Abra su navegador web e intente conectarse a la siguiente dirección: URL

http://192.168.43.223:4444/grid/console

NOTA: El URL puede variar de una máquina a otra. URL seguido de 'Los nodos deben registrarse en' en la pantalla anterior debe utilizarse.

Paso 6) Aparecerá la pantalla Grid Console, que indica que el concentrador está en funcionamiento.

Selenium Configuración de red mediante archivo JSON

Configurar NODOS usando JSON

Paso 1) Descargue el archivo de configuración del nodo de muestra proporcionado por Selenium utilizando lo siguiente URL

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

NOTA: SI ESTÁ UTILIZANDO SELENIUM 3.0 O SUPERIOR, DEBE UTILIZAR EL SIGUIENTE ARCHIVO JSON

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

Paso 2) Copie y pegue el código en un editor de texto como el Bloc de notas y guarde el archivo con la extensión ".json".

Paso 3)

Ejecute el siguiente comando en el símbolo del sistema

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

NOTA: Antes de ejecutar el comando, asegúrese de que los controladores para cada uno de los navegadores se hayan descargado en el directorio de la máquina local.

Paso 4) La siguiente pantalla aparecerá cuando se presione la tecla Intro.

Configurar nodos usando JSON

Paso 5) Navegue a la consola de grid para verificar si los nodos se han configurado correctamente

Configurar nodos usando JSON

Los navegadores se muestran en la consola de grid. Por lo tanto, podemos estar seguros de que los nodos están configurados correctamente.

Casos de prueba de muestra activados Selenium Cuadrícula:

 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");
         }

     }

 }

El código anterior abre el navegador Chrome y navega a la URL especificado en la 'base'URL' variable. Verificó que se muestra un enlace con el nombre 'Pruebas móviles' en la página.

URL en el 'nodoURLLa variable ' puede modificarse para reflejar la dirección IP de la máquina remota. El resultado de la prueba puede verificarse en el valor predeterminado. TestNG informe generado

Preguntas Frecuentes

El hub es la máquina central donde se cargan las pruebas y se administra la red. Los nodos son las máquinas que ejecutan las pruebas en combinaciones específicas de navegador y sistema operativo. Una red consta de un hub y uno o más nodos.

Grid 1 utiliza un control remoto separado y requiere Apache Ant, admitiendo solo Selenium Scripts RC y un navegador por control. Grid 2 viene incluido con el Selenium El archivo JAR del servidor no necesita Ant y admite scripts RC y WebDriver.

Cree un objeto DesiredCapabilities, establezca su browserName y plataforma, luego páselo a un RemoteWebDriver que apunte al nodo. URLLa cuadrícula dirige la prueba a un nodo correspondiente para ese navegador y sistema operativo.

La IA puede priorizar y paralelizar las pruebas, predecir fallos en las mismas, equilibrar la carga entre los nodos y reparar automáticamente los localizadores dañados. Esto reduce el tiempo de ejecución y el esfuerzo de mantenimiento en grandes redes que utilizan múltiples combinaciones de navegador y sistema operativo.

Sí. Las herramientas de IA pueden recomendar recuentos óptimos de nodos, generar configuraciones JSON, escalar automáticamente las cuadrículas de la nube en función de la longitud de la cola y detectar capacidad subutilizada, ayudar aping Los equipos gestionan grandes conjuntos de pruebas de forma eficiente sin necesidad de ajustes manuales.

Resumir este post con: