Si eres un tester o un desarrollador web experto, necesitas probar tus aplicaciones para errores y rendimiento en todos los navegadores y sistemas operativos disponibles. Sin embargo, con tantas dependencias en mano, no solo diferentes navegadores sino también diferentes versiones, sin duda se convierte en una tarea pesada.
Lo más importante de todo esto es que todos estos procesos deben automatizarse al máximo ya que en empresas importantes, crear manualmente casos de prueba y pipeline sería costoso y, además, sería la metodología menos deseable. Aquí es donde entra en juego Selenium Grid, una herramienta de automatización de pruebas basada en servidor ampliamente utilizada.
¿Qué es Selenium Grid?
Selenium Grid es una herramienta utilizada para realizar pruebas en paralelo y continuas en varios navegadores y entornos. Permite ejecutar pruebas concurrente en máquinas diferentes contra diferentes navegadores y sistemas operativos. La finalidad de Selenium Grid es distribuir la carga de ejecución de pruebas entre varias máquinas, lo que hace que sea más rápido ejecutar una gran cantidad de pruebas.
La arquitectura de Selenium Grid se basa principalmente en un nodo central y varios nodos. El nodo central actúa como un punto central donde se envían solicitudes de prueba. Los nodos son las máquinas (físicas o virtuales) donde se están ejecutando las pruebas. El nodo central enruta las solicitudes de ejecución de pruebas a los nodos apropiados en base a las configuraciones de navegador y plataforma deseadas especificadas en los scripts de prueba.
Selenium Grid admite varias configuraciones y pruebas distribuidas, incluyendo ejecución en paralelo y pruebas de capacidad selectiva de navegador. Es ampliamente utilizado en pruebas automatizadas para asegurar compatibilidad y funcionalidad a través de diferentes navegadores y plataformas.
¿Por Qué Es Necesario Selenium Grid?
Usted puede estar muy interesado en comprender por qué lo necesitamos en absoluto. Viendo específicamente, forma parte de la suite Selenium, que también incluye otros softwares y características como Selenium WebDriver y Selenium IDE, y vimos cómo puede apoyar navegadores como Chrome, Microsoft Edge, Opera, Safari, y todas sus diferentes versiones juntas. Además de eso, también puede ejecutar estos navegadores en varios sistemas operativos, creando un entorno de prueba end-to-end. Siendo de código abierto, también es gratuitamente disponible y recibe las actualizaciones y desarrollos más rápidos con acceso completo a toda la información.
Arquitectura de Selenium Grid
Vamos a comprender la arquitectura de Selenium Grid. Selenium Grid funciona con el modelo de Hub y Node, donde un Hub se conecta a varios nodos y puede ejecutarse en diferentes máquinas, navegadores y diferentes versiones de sus navegadores.
El Hub actúa como el punto central en la red Selenium, que dirige las órdenes de prueba a los nodos. También recibe solicitudes de prueba del cliente y las transfiere a los nodos requeridos. El Hub se lanza en una sola máquina con un sistema operativo definitivo y un navegador con los navegadores de prueba completos y sus versiones, y también con la capacidad de configurarlo en múltiples dispositivos que ejecutan el sistema operativo compatible.
Selenium también ha definido otros componentes en la arquitectura, que se explican en detalle en su sitio web, lo que puede resultar útil para ejecutar Selenium en su modo distribuido completo con enrutadores, sesiones y distribuidores bien definidos. Ahora que tenemos un conocimiento suficiente de SeleniumGrid,
Selenium Grid se puede instalar y utilizar en 4 sencillos pasos
Paso 1
En el paso 1, vamos a configurar rápidamente los prerequisitos.
Primero, debemos asegurarnos de que estemos ejecutando laúltima versión deJava, o Java 11 y superior. Esto se puede descargar desde su sitio web oficial.
A continuación, tendremos queinstalar todos los navegadores necesarios que deseemos probar. Utilizaremos un controlador de navegador Chrome con la versión 123 para acceder al navegador Chrome. Además, tenga en mente que las versiones del controlador y del navegador deben coincidir para ejecutar los servidores de Selenium. Y finalmente, utilizaré Eclipse IDE, ya que esta demostración se basará en Java. Este IDE se puede descargar desde el sitio web oficial de Eclipse.
Para el requisito previo final, necesitaríamos descargar la versión más reciente del servidor Selenium Grid del sitio web oficial de Selenium.
Paso 2
Ahora empecemos con el paso 2. Para este paso 2, he creado una nueva carpeta y he pegado mi servidor Selenium y el controlador de Chrome que usaré para esta demostración.
package Selenium_test1 ;
import java.net.MalformedURLException;
public class test1{
String hubUrl ="https://10.20.31.20";
String url ="https://www.world.co/search";
WebDriver driver;
public void setupGrid()
{
DesiredCapabilities ds= new DesiredCapabilities();
ds.setCapability("browserName", "Chrome");
try{
driver = new RemoteWebDriver( new URL(hubUrl),ds);
} catch (malformedURLException e){
e.printSTackTrace();
}
driver.get(url);
}
public void pageTitleValidation(){
String title = driver.getTitle();
System.out.println("page title :" +title);
}
public static void main(String[] args)
{
test1 obj = new test1();
obj.setupGrid();
obj.pageTitleValidation();
}
}
Paso 3
Ahora, para el Paso 3, he abierto mi IDE Eclipse y usando WebDriver, he escrito mi caso de prueba. Vamos a revisar un nuevo proyecto Maven entre otros. Además, también tendremos que pegar el controlador de Chrome que se usará en una carpeta específica aquí. La versión del servidor Selenium que se está utilizando se tiene que eliminar del path de este proyecto por las steps que seguiré ahora. Puedo mover hacia abajo a mi nombre de proyecto, hacer clic derecho y ir a la ruta de construcción. Desde aquí, puedo mover hacia abajo a configurar la ruta de construcción y en el lado derecho veré una posibilidad llamada agregar jaws externos. Desde aquí puedo agregar el servidor Selenium que estoy usando.
Haga clic en aplicar y cerrar, y después de eso, vamos al paso 4.
Paso 4
Ahora, para el paso 4, he vuelto a mi carpeta del Paso 2. Aquí, usaré la ventana del comando.
Esto hace que sea muy fácil encontrar la carpeta y es un proceso simple. Dado que esto es solo una máquina y un navegador, usaré el modo de Selenium Edge Sandaland.
El servidor está empezando. Agrega las dependencias requeridas una por una y el proceso se está completando. Nos ha proporcionado una dirección particular para ir. Ahora copiaré esta dirección y regresaré al paso 3. Aquí, en la URL del hub, pegaré esta dirección, y después de que mi código esté completo, iré al archivo y ejecutaré esto como una aplicación.
Bien, así que ahora que veo que la aplicación está ejecutándose, me moveré a mi navegador Chrome, y pegaré la dirección que me dio el prompt de comandos. Esta es mi dirección Selenium y veo que las sesiones están en ejecución. En la vista general, puedo ver que se han creado estereotipos completos para Chrome. Y en sesiones, mi caso de prueba predeterminado se está ejecutando activamente. También puede ver la página web.
Roles del Grid
El Grid consta de seis componentes diferentes que le proporcionan flexibilidad para desplegar su ejecución de automatización de pruebas de varias maneras. Puede iniciarlos por separado así como agruparlos como un hub o puede ejecutarlos en una sola máquina.
1. Autónomo
Integrando todos los componentes del Grid de manera fluida, el autónomo
opera como una entidad unificada. Iniciando el modo autónomo
, desplegas sin esfuerzo un Grid totalmente operativo con un solo comando, todo dentro de un solo proceso. Es importante notar que autónomo
está restringido a la ejecución en una sola máquina.
java -jar selenium-server-<version>.jar standalone
2. Hub y Nodo
Hub y nodo son los componentes más populares y ampliamente utilizados. permiten a los usuarios combinar diferentes máquinas con diferentes sistemas operativos y versiones de navegador. Debido a esto, tendrás una sola entrada para ejecutar pruebas webdriver en varios entornos.
hub
se compone de Router
, Distribuidor
, Event bus
y Cola de Sesiones
:
java -jar selenium-server-<version>.jar hub
node
detecta varios controladores disponibles desde la ruta del sistema.
java -jar selenium-server-<version>.jar node
Resumen
Por último, para resumir, Selenium Grid facilita la ejecución en paralelo de múltiples pruebas en múltiples navegadores y plataformas, utilizando la arquitectura hub-node. El hub actúa como repositorio central para mantener las pruebas, mientras que los nodos actúan como instancias de Selenium, ejecutando estas pruebas según las instrucciones del hub. Instalar Selenium Grid consiste en descargar el archivo jar del Servidor Selenium, el mismo archivo utilizado para ejecutar pruebas Selenium RC. Para verificar si el hub está operativo o no, se puede lograr a través de la ventana de comandos o un navegador web. Para realizar la ejecución de los scripts de prueba en el Grid, es necesario utilizar los objetos DesiredCapabilities
y RemoteWebDriver
. DesiredCapabilities
configura el tipo de navegador y el sistema operativo para la automatización, mientras que RemoteWebDriver
designa el nodo o máquina para ejecutar nuestras pruebas.