Selenium Tutorial de cuadrícula: configurar un concentrador y un nodo (ejemplo)

¿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

LINIEROS

  • 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 la pestaña 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 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 utilizar el Capacidades deseadas objeto, primero debes importar este paquete

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

Para utilizar 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 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 el 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. Se debe utilizar la URL seguida de "Los nodos deben registrarse" en la pantalla anterior.

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 usando la 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 inicia el navegador Chrome y navega a la URL especificada en la variable "baseURL". Verificó que se muestra un nombre de enlace "Prueba móvil" 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 de forma predeterminada TestNG informe generado

Resumen

  • Selenium Grid se utiliza para ejecutar múltiples pruebas simultáneamente en diferentes navegadores y plataformas.
  • Grid utiliza el concepto de nodo central.
  • El centro es el punto central donde carga sus pruebas.
  • Los nodos son los Selenium instancias que ejecutarán las pruebas que cargó en el hub.
  • Para instalar Selenium Grid, sólo necesitas descargar el Selenium Archivo jar del servidor: el mismo archivo utilizado para ejecutar Selenium Pruebas RC.
  • Hay dos formas de verificar si el concentrador se está ejecutando: una mediante el símbolo del sistema y la otra mediante un navegador.
  • Para ejecutar scripts de prueba en Grid, debe utilizar los objetos DesiredCapabilities y RemoteWebDriver.
  • DesiredCapabilites se utiliza para configurar el tipo de navegador y sistema operativo que automatizaremos.
  • RemoteWebDriver se utiliza para establecer contra qué nodo (o máquina) se ejecutará nuestra prueba.