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.

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í.
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.
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
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
- Cuando presiona Enter, su símbolo del sistema debería ser similar a la imagen a continuación.
Paso 6) Vaya la pestaña Selenium Interfaz web Grid y actualice la página. Debería ver algo como esto.
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
Para utilizar el RemoteWebDriver objeto, debe importar estos paquetes.
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.
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.
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.
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
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
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.
Configurar NODOS usando JSON
Paso 1) Descargue el archivo de configuración del nodo de muestra proporcionado por Selenium usando la siguiente URL
NOTA: SI ESTÁ UTILIZANDO SELENIUM 3.0 O SUPERIOR, DEBE UTILIZAR EL SIGUIENTE ARCHIVO 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.
Paso 5) Navegue a la consola de grid para verificar si los nodos se han configurado correctamente
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.