Configuración de una cuadrícula de selenio para pruebas de selenio distribuidas



Este blog lo ayudará a comprender la necesidad de Selenium Grid y sus beneficios. Léalo para configurar su primer Selenium Grid configurando el concentrador y los nodos.

Los otros blogs de esta serie de tutoriales de Selenium hablan sobre la creación de casos de prueba y la ejecución de esos casos de prueba en secuencia y en paralelo. Entonces, la técnica final que queda para discusión es la ejecución de casos de prueba en máquinas remotas. Selenium Grid se puede utilizar para ejecutar estas pruebas en máquinas / hosts remotos. Por lo tanto, ese es el tema de discusión del blog de hoy.

  1. ¿Por qué y cuándo utilizar Selenium Grid?
  2. ¿Qué es Selenium Grid?
  3. Selenium Grid 1 vs.Selenium Grid 2
  4. Arquitectura de la cuadrícula de selenio
  5. Construyendo una rejilla de selenio

¿Por qué y cuándo utilizar Selenium Grid?

Hay tantos navegadores web que se utilizan en la actualidad. Los usuarios pueden estar usando Chrome o Firefox o Safari u Opera o incluso Internet Explorer para leer este mismo blog. Pueden estar usando diferentes versiones de los navegadores. También pueden ejecutar estos navegadores en cualquier sistema operativo, ya sea Windows o Mac o Ubuntu o cualquier otra distribución de Linux.





¿Y si los usuarios vieran algo importante en Internet? Algo importante para tu negocio. ¿No le gustaría hacer un esfuerzo adicional (probar la aplicación web) solo para asegurarse de que sus usuarios y / o clientes obtengan la mejor experiencia de usuario? Lo harías, ¿verdad?

¡Bueno deberías!



Pero la pregunta es, ¿qué tan factible es? ¿Podrá dedicar tiempo a probar su aplicación web en todos los sistemas operativos posibles y todos los navegadores web disponibles? Hmm, eso suena como un desafío. Aquí es donde Selenium Grid encaja a la perfección y ayudaahorre su tiempo y energía.

Además de esto, surge una pregunta más: ¿Es viable configurar la infraestructura de red de Selenium utilizando sistemas locales? Mantener una cuadrícula con todos los navegadores y sistemas operativos necesarios es un desafío. Para ello, existen múltiples plataformas en línea que proporcionan una cuadrícula de selenio en línea a la que puede acceder para ejecutar sus scripts de automatización de selenio. Por ejemplo, puede utilizar LambdaTest . Tiene más de 2000 entornos de navegador en los que puede ejecutar sus pruebas y realizar pruebas verdaderamente automáticas entre navegadores.

¿Qué es la rejilla de selenio?

Selenium Grid es otra herramienta importante en el conjunto de herramientas de Selenium. Grid es capaz de coordinar pruebas de WebDriver / pruebas de RC que pueden ejecutarse simultáneamente en múltiples navegadores web o pueden iniciarse en diferentes sistemas operativos o incluso alojadas en diferentes máquinas.



trabajo en red - rejilla de selenioEntonces, ¿cómo funciona eso? Grid emplea una arquitectura Hub-Node donde hay un Hub, que actúa como maestro y uno o más nodos que actúan como esclavos.

Lo que esto significa es que, si tiene un total de 100 trabajos / pruebas que deben ejecutarse, las pruebas se pueden ejecutar simultáneamente en 5 máquinas, donde cada máquina ejecutará 20 pruebas. De hecho, puede ejecutar estas pruebas en diferentes combinaciones de sistemas operativos y navegadores. Cada máquina aquí puede ser de un sistema operativo diferente y dentro de cada sistema operativo, las pruebas se pueden realizar en diferentes navegadores.

Este acto fácilmente ahorraría mucho tiempo en la ejecución de la prueba. Si considera el ejemplo anterior, entonces podemos reducir el tiempo de ejecución a alrededor de 1/5 del tiempo total necesario para ejecutar pruebas en una sola máquina.

Si puede recordar de mis blogs anteriores, he mencionado un sinnúmero de veces que Grid fue parte del proyecto Selenium desde su inicio, es decir, desde Selenium v1. Selenium Grid también fue parte de Selenium v2 y actualmente es parte de Selenium v3. No hay mucha diferencia en la v2 y la v3 de Selenium Grid. Sin embargo, la v1 tiene muchas diferencias comparativamente. Entonces vamoscomprender las diferencias entre v1 y v2.

Selenium Grid 1 vs.Selenium Grid 2

La diferencia fundamental entre Grid v1.0 y v2.0 es que, RC se utilizó en Grid 1 y WebDriver se utilizó en Grid 2. La siguiente tabla explica las diferencias en detalle.

Cuadrícula 1 Cuadrícula 2
Requiere que Apache Ant esté instaladoNo se requiere la instalación de Apache Ant
Tiene su propio control remoto (esto es diferente al servidor RC)Incluido con el archivo jar de Selenium Server
Solo admite comandos de Selenium RCAdmite scripts de Selenium RC y WebDriver
Puede automatizar solo un navegador por control remotoPuede automatizar hasta 5 navegadores por control remoto


Ahora que hemos aprendido las diferencias fundamentales entre las dos versiones, profundicemos en Selenium Grid.

Arquitectura de la rejilla de selenio

Como mencioné anteriormente, Grid funciona sobre la base de un concentrador y múltiples nodos. Pero, ¿qué son Hub and Nodes y qué hacen?

El Hub

En cualquier configuración de Grid, solo puede haber un Hub y ese será el punto central en esa configuración de Grid. Todas las pruebas que deben ejecutarse deben cargarse aquí. A pesar de que las pruebas se cargan aquí, se ejecutarán solo en los Nodos. Podemos configurar cualquier máquina host para que sea nuestro Hub, y coordinará las actividades de ejecución de la prueba en otros hosts.

Para que esto suceda, primero debemos configurar el Hub y luego hacer que otros Nodos se registren en el Hub. Antes de entrar en demasiados detalles, déjeme mostrarle el comando para configurar el Hub.

Configurando el Hub

En primer lugar, debe descargar el archivo JAR del servidor Selenium del sitio web de Seleniumhq. El enlace es Aquí . También debe asegurarse de que Java esté instalado en su sistema y que las variables de entorno estén configuradas.

c ++ ordenar matriz de ints

Una vez que haya descargado el archivo jar, debe colocarlo en un directorio apropiado. Para mi comodidad, lo descargué y lo coloqué en la carpeta Selenium en C Drive. Se recomienda que también descargue el archivo jar y lo coloque en un directorio similar en todos los demás nodos.

Para configurar el Hub, debe ejecutar el comando en el símbolo del sistema de Windows. El comando está presente en el siguiente fragmento.

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

los selenium-server-standalone-3.4.0.jar es el nombre del archivo jar que descargué.
los -papel El indicador se utiliza para configurar esa máquina host en particular como Hub. Cuando presione enter, obtendrá la siguiente salida en su pantalla.

En caso de que no hayas notado la captura de pantalla anterior, vuelve a verla. Dice ' -Los nodos deben registrarse en http://192.168.0.11:4444/grid/register '. Ahora que el Hub está configurado, necesitamos configurar los Nodos y conectarlos a este Hub.

192.168.0.11 es la dirección IP del concentrador y cada nodo debe conectarse a esta dirección IP. 4444 es el número de puerto predeterminado en el que Selenium Grid se aloja y escucha las solicitudes. Si algún otro servicio se está ejecutando en el puerto 4444 y desea que Selenium Grid se aloje en otro puerto, puede hacerlo especificando el -Puerto bandera seguida del número de puerto.

Los nodos

Los nodos son las máquinas host en las que se ejecutan las pruebas. Estas pruebas serán lanzadas por el Hub. El Hub puede iniciar uno o más Nodos en máquinas remotas o en la misma máquina donde se encuentra el Hub. En cada uno de los nodos, se pueden iniciar diferentes sistemas operativos, y en diferentes sistemas operativos, se pueden iniciar diferentes versiones del mismo navegador o diferentes navegadores.

Configurar los nodos

De manera similar al Hub, primero debe descargar el archivo Jar en las máquinas Node y colocarlo en la Unidad C o en cualquier otro directorio común para su conveniencia. Luego puede ejecutar el siguiente comando en el símbolo del sistema de Windows. Si está iniciando incluso el Nodo en la misma máquina que su Hub, entonces debe ejecutar el comando iniciando otro símbolo del sistema.

java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

Hay solo algunas diferencias en este comando en comparación con el comando necesario para iniciar el Hub.
-Dwebdriver.chrome.driver = E: chromedriver.exe se utiliza para establecer la ruta del controlador del navegador. De manera similar a establecer la ruta del controlador del navegador en su código de WebDriver, usted lo especifica aquí para permitir que el Nodo realice pruebas. A partir de Selenium v3, debe descargar el navegador del controlador para Firefox. El controlador del navegador para Firefox es el controlador Gecko. Sin embargo, en las versiones 1 y 2, debe configurar el controlador del navegador para todos los navegadores que no sean Firefox.
-nodo de función La bandera se usa para configurar esa máquina host en particular como Node.
-hub http://192.168.0.11:4444/grid/register informa al nodo que se conecte al concentrador mediante la dirección IP del concentrador. Un punto importante a tener en cuenta es que si está iniciando cualquier Nodo en la misma máquina que su Hub, entonces puede especificar ' -hub http: // localhost: 4444 / grid / register 'En el comando en lugar de la dirección IP del Hub.

establecer la ruta de clase en java

Cuando presione enter, obtendrá el siguiente resultado en el símbolo del sistema.

A estas alturas, el nodo ya estaría conectado al concentrador. Puede verificarlo volviendo al símbolo del sistema utilizado para iniciar el Hub y verá el siguiente mensaje: ' Registrado un nodo http://192.168.0.11:5555 ‘.

La dirección IP y el número de puerto son los de su Node. Como tengo mi Nodo en la misma máquina que mi Hub, el puerto usado para el Nodo es 5555. Cuando lo inicie en otra máquina, se usará el puerto predeterminado.

Cuando inicie la siguiente URL en la máquina de su Hub, obtendrá el estado de los Nodos conectados a su Hub. Vea la parte resaltada en la captura de pantalla a continuación.

Ahora que su Selenium Grid está configurado, puede proceder a la ejecución de scripts de prueba en los nodos. Permítanme enfatizar nuevamente que necesitamos ejecutar scripts en nuestro Hub y se ejecutarán en nuestros Nodos. El script utilizado para ejecutar las pruebas es similar a WebDriverpruebas.

Construyendo una rejilla de selenio

He ejecutado mi script en Eclipse IDE. La ejecución de este script se basa en dos paquetes de biblioteca importantes. Son Capacidades deseadas objeto y RemoteWebDriver objeto.

DesiredCapabilities se utiliza para configurar el tipo de navegador y el sistema operativo de nuestro Node. Para importar el objeto DesiredCapabilities, use el siguiente código.

importar org.openqa.selenium.remote.DesiredCapabilities

RemoteWebDriver se utiliza para seleccionar el Nodo en el que queremos ejecutar la prueba. Para importar el objeto RemoteWebDriver, use las siguientes líneas de código.

import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver

He importado estos dos paquetes junto con el paquete de anotaciones TestNG para mi script como se muestra en el siguiente fragmento de código. He importado anotaciones de TestNG porque he ejecutado esto como una prueba de TestNG para la cual se generará un informe detallado. Le recomendaría que importe el mismo conjunto de paquetes para su código.

Cuando maniobre sobre los logotipos de cualquier navegador presente en la consola de Selenium Hub, obtendrá detalles como el browserName y el plataforma del nodo que desea automatizar. La imagen también indica cuántas instancias de los navegadores puedo abrir en mi Node. Puedo configurar un máximo de 5 instancias de Chrome, 5 de Firefox y 1 de Internet Explorer. Estos detalles están presentes en la siguiente captura de pantalla.

Puede usar el código en el fragmento de abajo para configurar su primer Grid.

package GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver public class TestGrid {controlador de WebDriver estático static String nodeUrl @BeforeTest public void setup () throws Malla nodeUrl = 'http://192.168.0.11:5555/wd/hub' Capacidades DesiredCapabilities = Capacidades DesiredCapabilities.chrome () Capacidades.setBrowserName ('chrome') Capacidades.setPlatform (Platform.WINDOWS) controlador = new RemoteWebDriver (nueva URL (nodeUrl ), capacidades)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

He dividido todo el guión de prueba en tres anotaciones de prueba. @BeforeTest, @Test y @AfterTest. En @BeforeTest, he usado los objetos DesiredCapablities y RemoteWebDriver para configurar mi Node. En @Test, le pedí al nodo que navegue a la página de inicio de Edureka y afirme el título de la página. En @AfterTest, le pedí al Nodo que saliera de la instancia del navegador.

Cuando su prueba pase la ejecución, obtendrá el siguiente resultado.

18 de mayo de 2017 3:09:07 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Dialecto detectado: OSS PASADO: simpleTest ===================== ========================== Prueba predeterminada Las pruebas se ejecutan: 1, Fallos: 0, Saltos: 0 ========== ==================================== ============= ================================== Conjunto predeterminado Total de pruebas ejecutadas: 1, Fallos: 0, Saltos: 0 = ============================================

Dado que esto se ejecuta como una prueba TestNG, obtendrá un informe de prueba detallado similar a la captura de pantalla a continuación.

Si no sabe qué es TestNG y cómo usar las anotaciones de prueba, lea mi blog sobre cómo usar Selenium WebDriver con TestNG de esta serie de tutoriales de Selenium.

Puede ver el video a continuación para presenciar una demostración de cómo construir una cuadrícula de selenio. El instructor que entrega el video explica los mismos conceptos que se explican en este blog.

Tutorial de cuadrícula de selenio para principiantes | Tutorial de selenio | Edureka

Entonces, eso nos lleva al final de este blog de Selenium Grid. Si tiene alguna duda o problema con cualquier código / contenido de esta serie de blogs, déjela en la sección de comentarios a continuación y resolveré su problema lo antes posible.

Si desea aprender Selenium y desarrollar una carrera en el dominio de las pruebas, consulte nuestro programa interactivo en línea aquí, que viene con soporte 24 * 7 para guiarlo durante su período de aprendizaje.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios y nos pondremos en contacto con usted.