Selenium 3 y 4: ventajas, novedades y usos

Selenium 3 y 4: ventajas, novedades y usos

¿Qué es el Selenium y de qué está compuesto?

Por Nedim Yilmaz

 Selenium es un conjunto de herramientas para pruebas web automatizadas. Está compuesto por;

  1. Selenium IDE (Entorno de desarrollo integrado); un complemento de Firefox que funciona para grabar y reproducir.
  2. Selenium RC (control remoto) (1.0); es una herramienta de prueba y se utiliza para trabajar en JavaScript para automatizar aplicaciónes web. (2004)
  3. WebDriver (2.0); es un marco de automatización web y le permite ejecutar sus pruebas en diferentes navegadores. (2011)
  4. Selenium Grid; permite que las pruebas se ejecuten en paralelo en varias máquinas.

¿Cuáles son las ventajas del Selenium?

  •  Selenium es de código abierto y de uso gratuito sin ningún coste de licencias.
  • Soporta múltiples lenguajes como Java, Ruby, Python, C#…
  • Admite pruebas de varios navegadores.
  • Tiene una buena cantidad de recursos y comunidad de ayuda.
  • Es compatible con muchos sistemas operativos como Windows, Mac, Linux…
  • Interactúa fácilmente con la aplicación web.

¿Cuáles son las desventajas de Selenium?

  •  Selenium solo admite aplicaciones basadas en navegadores web, no admite aplicaciones basadas en Windows.
  • No tiene una herramienta de informes integrada, necesita herramientas de terceros para la actividad de generación de informes.
  • No se puede trabajar con gráficos, captchas, códigos de barras, formas.
  • No es compatible con la instalación de carga de archivos.
  • Difícil de dominar, requiere conocimientos de nivel de desarrollador.
  • Es difícil escribir buenos localizadores.
  • Difícil de sincronizar.

¿Cuáles son las limitaciones de Selenium?

  • No podemos probar la aplicación de escritorio.
  • No podemos probar servicios web.
  • Tenemos que usar bibliotecas y herramientas externas para realizar tareas como pruebas de Frameworks (TestNG, JUnit).
  • Lectura desde archivos externos (Apache POI para excel).
  • La automatización de Captcha no es posible usando Selenium.
  • No es compatible la carga de archivos.

¿Qué tipos de pruebas automatizamos con Selenium?

  • Pruebas funcionales (positivo/negativo, IU).
  • Pruebas de humo (smoke tests).
  • Pruebas de regresión.
  • Pruebas de integración.
  • Pruebas de extremo a extremo (end to end testing).
  • Pruebas basadas en datos.

¿Qué no hacemos con Selenium?

  • Rendimiento, carga, pruebas de estrés, pruebas ad hoc manuales,
  • Pruebas de bases de datos puras (si solo probamos la propia base de datos).

 

Diferencias entre Selenium3 y Selenium 4

Estandarización W3C de Selenium WebDriver

En las versiones anteriores de Selenium (es decir, Selenium 3), el protocolo JSON Wire era responsable de la comunicación entre el navegador web y el código de prueba. Esto condujo a la sobrecarga adicional de codificar y decodificar las solicitudes de API utilizando el protocolo W3C. Esto está configurado para cambiar con WebDriver en Selenium 4, ya que las API de WebDriver adoptan la estandarización W3C.

Dado que los principales controladores de navegadores, como geckodriver, chromedriver, etc., siguen el estándar W3C, WebDriver en Selenium 4 se comunicará directamente con el navegador web.

Simplificación para abrir nuevas ventanas y pestañas del navegador

Hay una serie de escenarios en los que le gustaría abrir un nuevo navegador (o pestaña) y realizar un determinado conjunto de acciones en la ventana/pestaña recién abierta. En Selenium 3, debe crear un nuevo objeto Web Driver y luego cambiar a la nueva ventana (o pestaña) usando su WindowHandle único para realizar acciones posteriores en esa ventana (o pestaña).

Selenium 4 proporciona una nueva API newWindow que le permite crear una nueva ventana (o pestaña) y cambia automáticamente a ella. Dado que la nueva ventana o pestaña se crea en la misma sesión, evita crear un nuevo objeto WebDriver.

Para crear una nueva pestaña en Selenium 4 y cambiar a ella, pase WindowType.TAB al método newWindow(). Como cada ventana del navegador en Selenium tiene un WindowHandle (o ID) único , el WindowHandle requerido debe pasarse al método switchTo().window() para cambiar entre las diferentes ventanas.

Selenium 3 y 4

Apertura de múltiples ventanas nuevas:

Selenium 3 y 4

Apertura de varias pestañas nuevas:

Selenium 3 y 4

Localizadores en Selenium:

Selenium webdriver utiliza localizadores para encontrar los elementos en la página web. La siguiente es la lista de identificadores o localizadores de objetos admitidos por selenium.

De acuerdo con la prioridad, la lista de localizadores que se utilizarán al crear secuencias de comandos.

  • id : elemento seleccionado con el atributo @id especificado .   
  • Nombre : seleccione el primer elemento con el atributo @name especificado .   
  • Linktext: seleccione un elemento de enlace (etiqueta de anclaje) que contenga texto que coincida con el texto del enlace especificado 
  • Texto de enlace parcial: seleccione un elemento de enlace (etiqueta de anclaje) que contenga texto que coincida con el texto de enlace parcial especificado 
  • Nombre de la etiqueta: localiza el elemento usando un nombre de etiqueta. 
  • Nombre de la clase: localiza el elemento usando un nombre de clase. 
  • Css selecciona el elemento usando los selectores css. 
  • XPath : Localizar un elemento utilizando una expresión XPath. 

Localizadores relativos:

Los localizadores relativos, también llamados localizadores amigables, ayudan a ubicar elementos web que están cerca, a la izquierda, a la derecha, encima y debajo de un elemento específico. Los métodos de localización relativa admiten el uso con withTagName (en Selenium 4 Java) o with_tag_name (en Selenium 4 Python). Estos son los cinco localizadores relativos que están disponibles en Selenium 4.

 

WebElement googleSearchIcon = driver.findElement (By.xpath("//div[1]/div[3]/center/input[1]"));
 WebElement luckyButton = driver
         .findElement(RelativeLocator.with(By.tagName("input"))
                 .toRightOf(googleSearchIcon));
 luckyButton.click();

Selenium 3 y 4

Selenium 3 y 4

Captura de pantalla de TakeElement

En Selenium 3, había una disposición para capturar una captura de pantalla de toda la página web. Selenium 4 en adelante, hay una nueva opción para capturar capturas de pantalla de un WebElement en particular. Por lo tanto, no es necesario utilizar herramientas de terceros como en Selenium 3 para capturar una captura de pantalla de WebElement.

Selenium 3 y 4

Ejemplo para Selenium 3:

 

File file=  ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file,new File("./screenshots/google.png"));

Selenium 3 y 4

El método recién introducido en Selenium 4 captura la captura de pantalla de un elemento para el contexto de navegación actual. 

Ejemplo para Selenium 4:

 

WebElement logo = driver.findElement (By.xpath("//img[@class='lnXdpd']"));
File logoFile = logo.getScreenshotAs(OutputType.FILE);
File logoDestFile =new File("./screenshots/logo.png");
FileUtils.copyFile(logoFile,logoDestFile);

Selenium 3 y 4

Nuevas incorporaciones a la clase de acciones

Actions Class en Selenium proporciona varios métodos para realizar una sola acción o una serie de acciones en los WebElements presentes en el DOM. Las acciones del mouse (p. ej., hacer clic, hacer doble clic, etc.) y las acciones del teclado (p. ej., tecla arriba, tecla abajo, enviar teclas) son las dos amplias categorías de acciones.

Con Selenium 4, se agregan nuevos métodos a la clase Actions, que reemplaza las clases del paquete org.openqa.selenium.interactions.

  • Hacer clic: click(WebElement) es el nuevo método agregado a la clase Actions y sirve como reemplazo del método moveToElement(onElement).click().  Al igual que el método en las versiones anteriores a Selenium 4, click(WebElement) se usa para hacer clic en un elemento web.
  • Haga doble clic: El método moveToElement(element).doubleClick() utilizado para hacer doble clic en un WebElement se reemplaza con un método doubleClick(WebElement) en Selenium 4.  Demostramos el uso de DoubleClick junto con el método ContextClick .  
  • ContextClick: El método moveToElement(onElement).contextClick() utilizado para hacer clic derecho en un WebElement ahora se reemplaza con el método contextClick(WebElement) en Selenium 4.  
  • Hacer clic y mantener: El método moveToElement(Element).clickAndHold() utilizado para hacer clic en un WebElement sin realizar la acción Release se reemplaza con clickAndHold(WebElement). Demostramos el uso de ClickAndHold junto con el método Release.
  • Liberar: El método release(), que se usa para soltar el botón presionado del mouse, ha sido parte de la clase org.openqa.selenium.interactions.ButtonReleaseAction. En Selenium 4, el método es parte de la clase Actions.

Conclusión:

Aunque Selenium 4 está diseñado como un reemplazo directo de Selenium 3, tiene algunos trucos que nos hacen la vida más fácil como “localizadores relativos” y nuevo soporte para interceptar el tráfico de red, cambios en la forma en que puedes crear una nueva instancia de Selenium, ¡y algunas cosas más!

 

Fuentes:

https://www.seleniumeasy.com/

https://blog.testproject.io/2021/06/01/selenium-3-vs-selenium-4/

https://www.guru99.com/

https://www.softwaretestinghelp.com/

https://www.lambdatest.com/blog/

https://www.quora.com/Cuál-es-la-diferencia-entre-Selenium-3-y-Selenium-4

https://www.testingxperts.com/blog/selenium-4

https://www.javatpoint.com/selenium-tutorial