Selenium ha sido por excelencia el marco de trabajo de automatización de pruebas para soluciones basadas en web. Aunque hoy en el mercado existen muchísimas herramientas de prueba, una gran parte de ellas están basadas en la filosofía y arquitectura de Selenium.
Desde el último release oficial (versión 3), quizás hemos tenido la sensación de que Selenium estaba un poco abandonado en torno a su mantenimiento. Sin embargo ese tiempo de “blackout” en términos de actualizaciones y mantenimiento bien ha valido la pena ya que trajo consigo el resultado de un trabajo admirable de toda la comunidad para brindarnos una versión 4 beta bastante formidable.
La intención de este artículo es resaltar las características conocidas de Selenium como marco de trabajo de automatización de pruebas y dejar ver algunos de los cambios más resaltantes incluidos en su versión 4 (beta).
¿Que es Selenium?
Selenium es una herramienta de pruebas de código abierto, bajo licenciamiento Apache 2.0 (lo cual significa que puede ser utilizado de manera gratuita).
Revisando un poco de historia, Selenium fue creado en 2004 por Jason Huggins, (quien fue CTO de Sauce Labs y fundador de Robot Maker), un notable colaborador cuya habilidad “super poder” es hacer software de pruebas, y en conjunto con varios colaboradores logro resolver las interacciones usuario / browser.
¿Que Lenguajes soporta?
Aunque Selenium soporta una gran cantidad de lenguajes, los más populares en uso son: Ruby, Java, Python, C#, JavaScript, PHP, Perl.
¿Que Navegadores soporta?
Selenium funciona con los navegadores más modernos en sus últimas versiones, poniendo a disposición sus correspondientes webdrivers: Google Chrome, Microsoft Edge, Mozzilla, Opera Chromium, Apple Safari, Firefox.
Existen algunas excepciones para la gama de herramientas de Selenium en relación a los navegadores ccompatibles que más adelante veremos.
¿Que Sistemas Operativos soporta?
Los sistemas operativos que soporta selenium son los más comerciales: Microsoft Windows, Linux y Mac OS.
¿Cuáles son las presentaciones / herramientas que provee?
Selenium IDE: Es una herramienta (plugin) que te permite hacer grabaciones desde la pantalla de ejecución, es decir playback y playscreen fácilmente, siendo muy utilizada en la reproducción de bugs, y ejecución de tareas repetitivas dentro de los test. Selenium ID es soportado por los navegadores Firefox y Chrome. En resumen, Selenium IDE permite:
- Grabar y reproducir pruebas en Firefox y Chrome.
- Organizar pruebas en suites para una fácil gestión.
- Guardar y cargar scripts, para su posterior reproducción.
Selenium GRID: Esta herramienta te permite la ejecución de pruebas masivas en paralelo, distribuidas en distintas terminales (nodos) con distintos ambientes (sistemas operativos y navegadores) dirigidas desde un punto central (hub).
Generalmente Selenium Grid es utilizado para delegar y acelerar nuestras pruebas ya que permite:
- Ejecutar pruebas en varios navegadores, varias versiones de navegador que se ejecutan en diferentes sistemas operativos.
- Reducir los tiempos de ejecución.
Nota: Grid 3 ya no posee soporte por lo que es recomendable utilizar Grid 4
Imagen #1 Ejemplo – Arquitectura Selenium Grid
Selenium Web Driver: Es una de las herramientas de selenium con la que puedes realizar pruebas en soluciones /software basado en web, a través de los distintos navegadores.
Imagen #2 Ejemplo – Arquitectura Selenium Web Dirver
En la imagen es importante resaltar que el actual \»JSON wire protocol\» es reemplazado por el WebDriver protocol W3C como lo describiremos más adelante.
Remote Web Driver: también es posible utilizar el Web Driver de manera remota. Funciona de la misma manera que el Web Driver convencional con la diferencia de que los tests pueden correr en una máquina separada. Esta modalidad requiere de una configuración especial, ya que trabaja bajo una arquitectura “cliente -servidor”, donde el cliente será tu Web Driver y tu servidor Java, que se puede alojar en cualquier servidor de aplicaciones JEE.
Básicamente la diferencia entre ambos es la interacción con el browser, dado que Web Driver interactua directamente con el browser mientras que Selenium RC implementa una “capa media” que negocia las interacciones entre en browser y tus tests.
A continuación un cuadro comparativo resumen que nos ayudará a discernir mejor las diferencias entre los tres (3) “sabores” de Selenium:
Característica | Selenium IDE | Selenium RC | Selenium Web Driver |
Instalación | Muy fácil de usar e instalar | Configuración complicada | Configuración menos complicada que Selenium RC |
Conocimiento / Experiencia de Programación | No es necesario | Requerido | Requerido |
Navegadores | Funciona solo en Firefox y Chrome | Soporta todos los navegadores | Soporta todos los navegadores |
Base de Interacciones | Basado en Javascript | Basado en Javascript | Interactúa nativamente con los navegadores |
Método de Ejecución | No requiere ningún servidor para ejecutar scripts | Requiere del inicio del servidor (Selenium RC) para ejecutar scripts | No requiere de ningún servidor para ejecutar scripts ya que se comunica directamente con los browsers. |
Operadores | No soporta operadores condicionales y bucles. | Ejecuta operaciones condicionales y de bucles. | Ejecuta operaciones condicionales y de bucles. |
Usos | Usado como herramienta de prototipo. | Usado para escribir scripts avanzados. | Usado para escribir scripts avanzados. |
Uso de “Listeners” | No soporta uso de listeners | No soporta uso de listeners | Soporta uso de listeners |
Orientado a Objeto | No es orientado a objeto. | Su API es semi orientado a objetos y redundante | Su API es: Compacto y orientado a objeto |
Tiempo de Ejecución | Su ejecución es lenta | Su ejecución es lenta, pero más rápida que Selenium ID | Ejecución rápida. |
Plataformas | No soporta plataformas Android y IOs. | No soporta plataformas Android y IOs. | Soporta plataformas Android y IOs. |
Cursor | No hace movimientos de cursor de mouse | No hace movimientos de cursor de mouse | Hace movimientos de cursor de mouse |
Ayuda y Reportes | Incorpora ayuda y reporte de resultados | Incorpora ayuda y reporte de resultados | No tiene mecanismos propios para generar reportes de resultados (lo hace mediante librerías y plugins) |
Selenium no es adecuado para los siguientes escenarios:
+ Captchas: Justamente los captchas fueron diseñados para proteger a las web de bots y spam, por lo que no están disponibles para una automatización con Selenium.
+ Descarga de archivos: La API de selenium permite el inicio del proceso de descarga pero no da visibilidad del proceso en sí mismo.
+ Códigos de respuesta HTTP: Selenium no trabaja con códigos de respuesta HTTP, pero en cambio puede usar proxys de ser necesario.
+ Inicio de sesión en servicios de terceros: redes sociales, servicios en la nube o cuentas de correo electrónico no son candidatas para un proceso de automatización ya que sería muy laborioso, y además estas aplicaciones proveen sus propias APIs para efectos de prueba. Aunque parte de esta limitación Selenium 4 la mejora en gran proporción.
+ Pruebas de rendimiento: definitivamente no es adecuado para este tipo de pruebas ya que no fue diseñado con ese propósito.
Novedades y Mejoras de Selenium 4
+ La adopción del WebDriver W3C Protocol, y a su vez el retiro del protocolo de cableado Json Wire protocol es uno de los cambios más significativos a nivel de arquitectura, lo que lleva a una mayor estabilidad de las pruebas en todos los navegadores.
+ La introducción de Localizadores Relativos, poniendo a disposición localizadores más legibles para el humano.
Localizador | Descripción |
above | El elemento web requerido esta ‘above’ (encima) de un elemento particular |
below | El elemento web requerido esta ‘below’ (debajo) de un elemento particular |
to_left_of | El elemento web requerido esta ‘to the left of’ (a la izquierda) de un elemento particular |
to_right_of | El elemento web requerido esta ‘to the right of’ (a la derecha) de un elemento particular |
near | El elemento web requerido esta ‘at most 50 pixels’ de distancia del un elemento especificado. |
+ Optimización del Selenium Grid
+ Selenium IDE para Firefox y Chrome y su disponibilidad en extensiones.
+ Soporte nativo de Chrome Dev Tools, con lo que puede ser posible la incorporación de pruebas de geolocalización inclusive.
Conclusiones
Con los cambios incluidos en la versión 4 de Selenium, se vislumbra un repunte importante en el uso de esta herramienta de automatización. Es importante prepararnos, conocer y manejar esta herramienta. Si aun no haz tenido la experiencia de trabajar con ella date el permiso de conocerla y experimentar su gran alcance.
Además, no olvides que es la gran demandada en el mercado de herramientas de automatización, y el corazón de otras tantas emergentes.
Con 💙
💻María Gabriela Tenreiro