img
Testing

Algunos"Highlights" de Selenium

Mar 7, 2021   Maria Gabriela Tenreiro
   

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 estan basadas en la filosofía y arquitectura de Selenium. 

Desde el último release oficial (version 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 inluidos 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 experienca 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 💙


    💻Maria Gabriela Tenreiro

    Destacados