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: