Hub y nodo (con ejemplo)

¿Qué es una rejilla de selenio?

Rejilla de selenio Es parte de Selenium Suite, que se especializa en ejecutar múltiples pruebas en múltiples navegadores, sistemas operativos y máquinas en paralelo. Esto se logra enrutando los comandos del navegador remoto donde un servidor actúa como un concentrador. Un usuario debe configurar el servidor remoto para realizar las pruebas.

Selenium Grid tiene 2 versiones: la más antigua Grid 1 y Grid 2. Solo nos centraremos en Grid 2, ya que Grid 1 está siendo depreciado gradualmente por el equipo de Selenium.

Selenium Grid utiliza el concepto de nodo concentrador cuando solo realiza la prueba en una máquina llamada mol, pero la ejecución es conocida por diferentes máquinas nodos.

Debe utilizar Selenium Grid cuando desee realizar una de las siguientes acciones o ambas:

Las siguientes son las principales diferencias entre Selenium Grid 1 y 2.

Cuadrícula 1

Cuadrícula 2

Selenium Grid 1 tiene su propio control remoto que es diferente del servidor Selenium RC. Son dos programas diferentes.

Selenium Grid 2 ahora se incluye con el archivo jar de Selenium Server

Necesitas instalar y configurar apache Ant primero antes de poder usar Grid 1.

No es necesario instalar Apache Ant en Grid 2.

Solo se pueden admitir comandos / scripts de Selenium RC.

Puede admitir scripts de Selenium RC y WebDriver.

Solo puede automatizar un navegador por control remoto.

Un control remoto puede automatizar hasta 5 navegadores.

Arquitectura de cuadrícula de selenio

Selenium Grid tiene una arquitectura de concentrador y nodo.

El Hub

Los nodos

Una rejilla de selenio se puede configurar de dos formas diferentes; uno a través de una línea de comando y el otro a través de un archivo de configuración JSON.

¿Cómo configurar una cuadrícula de selenio? Usar línea de comando

En esta sección, utilizará 2 máquinas. La primera máquina es el sistema que ejecutará el concentrador y la otra máquina ejecutará un nodo. Para simplificar, llamemos a la máquina donde se ejecuta el concentrador como «Máquina A» y «Máquina B». la máquina en la que se ejecuta el nodo. 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 y la máquina B tiene una IP de 192.168.1.4.

Paso 1

Descargue el Selenium Server de aquí.

Paso 2

Puede colocar el archivo .jar de Selenium Server en cualquier lugar de su HardDrive. Para el propósito de este tutorial, colóquelo en la unidad C de la Máquina A y la Máquina B. Una vez que haya hecho esto, ahora está instalando Selenium Grid. Los siguientes pasos iniciarán el concentrador y el nodo.

Paso 3

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

Paso 4

Otra forma de verificar que el concentrador se está ejecutando es usar un navegador. Selenium Grid, de forma predeterminada, usa el puerto 4444 Machine A para su interfaz web. Simplemente abra un navegador y vaya a http: // localhost: 4444 / grid / console

También puede verificar si la máquina B puede acceder a la interfaz web del concentrador iniciando un navegador y yendo a donde la dirección IP o el nombre de host de la máquina que contiene el «iporhostnameofmachineA» debe ser el concentrador en ejecución. 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 hub ya está configurado, vamos a lanzar un nodo. Vaya a la Máquina B y luego envíe un símbolo del sistema.
  • Vaya a la unidad raíz C y escriba el código a continuación. Usamos la dirección IP 192.168.1.3 porque ahí es donde se ejecuta el concentrador. También usamos el puerto 5566, aunque puede elegir cualquier número de puerto libre que desee.
  • NOTA: Ahora debe darle al controlador Gecko una ruta si está usando 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
  • Cuando presione Entrar, su símbolo del sistema debería verse como la imagen a continuación.

Paso 6

Vaya a la interfaz web de Selenium Grid y actualice la página. Debería ver algo como esto.

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

Para diseñar scripts de prueba que se ejecutarán en la cuadrícula, debemos usarlos Capabilites deseables y el RemoteWebDriver cosas.

Hacia Capabilites deseables objeto, primero debe importar este paquete

Hacia RemoteWebDriver objeto, necesita importar estos paquetes.

Uso del objeto DesiredCapabilites

Vaya a la interfaz web de Grid y navegue hasta una imagen del navegador que desea automatizar. Nota la plataforma, y el browserName mostrar la información sobre herramientas.

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 RemoteWebDriver

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

A continuación se muestra un WebDriver simple Testng código que puede crear en Eclipse en la Máquina A. Cuando lo ejecute, la Máquina B se automatizará.

La prueba debe pasar.

Configuración de cuadrícula de selenio usando un archivo JSON:

JSON son las siglas de Javascript Object Note. Es un formato estándar que se utiliza para intercambiar datos entre el navegador y el servidor web. Selenium tiene un archivo de configuración JSON incorporado que se puede usar para configurar una cuadrícula de selenio.

A continuación se muestran los pasos para configurar una cuadrícula de selenio utilizando un archivo de configuración JSON.

Paso 1) Descargue el código para el archivo de configuración JSON usando la ruta a continuación 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 Bloc de notas con la extensión ‘.json’

Paso 3)Inicie el concentrador usando el comando a continuación usando el símbolo del sistema

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

NOTA: Un archivo jar independiente de selenio y el archivo json deben estar presentes en el mismo directorio

Paso 4) Aparecerá la siguiente pantalla que indica que el concentrador se ha configurado correctamente

Paso 5) Abra un navegador web e intente conectarse a la siguiente URL

http://192.168.43.223:4444/grid/console

NOTA: La URL puede variar de una máquina a otra. Una URL seguida de «debería tener nodos de registro» en la pantalla de arriba.

Paso 6) Aparecerá una pantalla de Grid Console que indica que el concentrador está funcionando

Configure NODES usando JSON:

Paso 1) Descargue el archivo de configuración de nodo de muestra proporcionado por Selenium usando la URL a continuación https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

NOTA: SI APRUEBA O SELENIUM 3.0, SE DEBE USAR EL MEJOR 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 descarguen en un directorio de máquina local.

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

Paso 5) Vaya a la consola de la cuadrícula para verificar que los nodos estén configurados correctamente

Los navegadores se muestran en la consola de la cuadrícula. Entonces podemos estar seguros de que los nodos están configurados correctamente.

Casos de prueba de muestra de cuadrícula de selenio:


 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 = "http://demo.guru99.com/test/guru99home/";
         nodeURL = "http://192.168.43.223:4444/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 inicia el navegador Chrome y navega a la URL especificada en la variable ‘baseURL’. Verifique que el nombre del enlace ‘Prueba móvil’ se muestre en la página

La URL de la variable ‘nodeURL’ se puede modificar para reflejar la dirección IP de la máquina remota. El resultado de la prueba se puede verificar en el informe predeterminado de TestNG generado

Resumen

  • Selenium Grid se utiliza para ejecutar múltiples pruebas simultáneamente en diferentes navegadores y plataformas.
  • La cuadrícula utiliza el concepto de nodo central.
  • El concentrador es el punto central donde carga sus pruebas.
  • Los nodos de los casos de Selenium cargarán las pruebas que realizó en el concentrador.
  • Para instalar Selenium Grid, simplemente descargue el archivo jar de Selenium Server, el mismo archivo que se usa para ejecutar las pruebas de RC Selenium.
  • Hay 2 formas de verificar si el concentrador se está ejecutando: una fue a través del símbolo del sistema y la otra a través de un navegador
  • Para ejecutar scripts de prueba en Grid, debe usar los objetos DesiredCapabilities y los objetos RemoteWebDriver.
  • DesiredCapabilites se utiliza para establecer el tipo de automatización del navegador y del sistema operativo
  • RemoteWebDriver se usa para configurar el nodo (o máquina) contra el cual se dirige nuestra prueba.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *