¿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:
- Ejecute sus pruebas en varios navegadores, sistemas operativos y máquinas al mismo tiempo. Esto asegurará que sea su aplicación. Prueba Totalmente compatible con una amplia gama de combinaciones de navegador y sistema operativo.
- Ahorre tiempo en la ejecución de sus salas de prueba. Si configura una cuadrícula de selenio para ejecutar 4 pruebas a la vez, por ejemplo, podrá completar todo el conjunto aproximadamente 4 veces más rápido.
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
- El concentrador es el punto central donde carga sus pruebas.
- Debe haber solo un concentrador en una cuadrícula.
- El concentrador solo se inicia en, digamos, una máquina cuyo sistema operativo es Windows 7 y cuyo navegador es IE.
- La máquina en la que se encuentra el concentrador es donde se ejecutarán las pruebas, pero verá que el navegador está automatizado en el nodo.
Los nodos
- Los nodos de casos de selenio cargarán las pruebas que realizó en el concentrador.
- Una cuadrícula puede contener uno o más nodos.
- Los nodos se pueden iniciar en varias máquinas con diferentes plataformas y navegadores.
- Las máquinas que ejecutan los nodos no tienen que estar en la misma plataforma que la plataforma central.
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.
- Capabilites deseables solía escribir navegador y SO que automatizamos
- RemoteWebDriver utilizado para establecer el nodo (o máquina) contra el que va nuestra prueba.
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
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.