Cómo tomar una captura de pantalla en Selenium WebDriver



Este artículo sobre cómo tomar una captura de pantalla en Selenium WebDriver lo ayuda a aprender cómo capturar la captura de pantalla usando el método TakesScreenshot y los oyentes TestNG.

Automation Testing ha definido un nuevo grifo de las pruebas modernas y está aquí para quedarse. Sin embargo, si el proceso de prueba falla, sería muy inconveniente volver a probar todo el script. Aquí es donde las capturas de pantalla son útiles, ya que ayudan a detectar fallas en las pruebas al instante. A través de este blog aprenderemos cómo realizar una captura de pantalla en WebDriver.

Hablaré de los siguientes temas:

Entonces, ¡comencemos, amigos!





Captura de pantalla en Selenium WebDriver: ¿Por qué se requiere una captura de pantalla en las pruebas de automatización?

Las capturas de pantalla son deseables para el análisis de errores. puede tomar capturas de pantalla automáticamente durante la ejecución. Suponga que escribe una secuencia de comandos de prueba para automatizar una página web, no seguiría monitoreando para ver si funciona bien en todo momento. Dejarías que el guión hiciera su trabajo y estarías ocupado en algún otro trabajo.

  • Las capturas de pantalla nos ayudan a comprender el flujo de la aplicación y comprueba si se comporta en consecuencia.
  • Debe encasillar la instancia de WebDriver a TakesScreenshot.
  • Ayuda mientras realizas prueba de navegación cruzada según requiera el usuario para ver los informes de la ejecución
  • El seguimiento de la ejecución sería mucho más fácil si trabaja en un navegador sin cabeza.
  • También se pueden capturar fácilmente capturas de pantalla de las pruebas que fallaron.

Ahora, sigamos adelante y aprendamos cómo exactamente puede tomar una captura de pantalla mientras prueba una aplicación.



Captura de pantalla en Selenium WebDriver: ¿Cómo capturar una captura de pantalla en Selenium?

Para capturar una captura de pantalla en Selenium, podemos hacer uso de una interfaz, llamada Toma una captura de pantalla. Este método yoIndica el controlador, que puede capturar una captura de pantalla y almacenarla de diferentes maneras.

Sintaxis:



Archivo de archivo = (controlador (TakesScreenshot)) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = (controlador (TakesScreenshot)) .getScreenshotAs (OutputType.BASE64)

dónde Tipo de salida define el tipo de salida para una captura de pantalla.

Para capturar una captura de pantalla y almacenarla en una ubicación particular, existe un método llamado ' getScreenshotAs

Entendamos esto en detalle

Para la extensión de WebDriver Toma de pantalla método, esto hace el mejor esfuerzo según el navegador para devolver lo siguiente en un orden preferible:

  • Toda la pagina
  • Ventana actual
  • Parte visible del fotograma actual
  • Una captura de pantalla de toda la pantalla que contiene el navegador.
  • Todo el contenido del elemento HTML: la parte visible del elemento HTML

Sintaxis:

X getScreenshotAs (OutputType (X). Target) arroja WebDriverException

dónde

  • X es el tipo de retorno del método
  • Target tiene la dirección de destino
  • Lanza si la implementación subyacente no admite la captura de pantalla.

Caso de prueba fallido

ha creado algunas funciones nuevas y geniales que facilitan mucho la prueba de una aplicación. Esto es porque el permite la interacción fuera del recinto de seguridad de Javascript. Una de las nuevas funciones útiles es poder tomar capturas de pantalla desde WebDriver.

Puede tomar capturas de pantalla en cualquier etapa de la prueba, pero sobre todo, se utiliza para cuando una prueba falla y tomar capturas de pantalla ayuda al análisis para que podamos ver qué salió mal durante una prueba fallida. Esto se puede hacer usando Anotaciones TestNG.

Para hacer esto, primero necesitaré

encasillado doble a int java
  • Crea una clase y luego implementaTestNG ' ITestListener .
  • Entonces llama a un método 'OnTestFailure' .
  • Agregue el código para tomar la captura de pantalla en este método.
  • En lugar de simplemente tomar la captura de pantalla, obtenga el nombre del método de prueba y tome una captura de pantalla con el nombre de la prueba y colóquela en la carpeta de destino.

Ahora, la pregunta es cómo obtener el objeto de controlador en la clase TestListeners usando TestNG.

Te ayudaré a comprender lo fácil que es hacerlo.

Para tomar una captura de pantalla en Selenium, necesitamos tener un objeto controlador. Obtenga el controlador de ITestContext, que debe establecerse en la configuración base, donde es fácil crear nuestra instancia de controlador. Espero que estén claros con esto. Continuando, echaremos un vistazo a la demostración donde lo ayudaré a comprender lo simple que es tomar una captura de pantalla en Selenium.

Explicaré dos programas diferentes aquí para que tengas una idea adecuada sobre cómo tomar una captura de pantalla en Selenium.

El primer programa trata sobre cómo realizar una captura de pantalla del caso de prueba ejecutado correctamente. El segundo programa le ayuda a comprender cómo tomar una captura de pantalla durante la falla de la prueba.

Captura de pantalla en Selenium WebDriver: Manifestación

Lo primero que debe hacer cuando desea probar una aplicación web es tener los archivos Selenium Jar y las bibliotecas de Java. Puede elegir un IDE de su elección. Prefiero trabajar en el IDE de Eclipse porque es fácil de usar.

  • Estableceré el controlador del navegador en
  • Cree una instancia de la instancia del controlador con ChromeDriver.
  • Obtén la URL de la página web.
  • Realice las acciones correspondientes.

En este caso, tomaré una captura de pantalla de nuestra página web oficial.

Consulte el siguiente código:

import java.io.File import java.io.IOException import org.apache.commons.io.FileUtils import org.openqa.selenium.OutputType import org.openqa.selenium.TakesScreenshot import org.openqa.selenium.WebDriver import org.openqa .selenium.chrome.ChromeDriver public class Screen {public static void main (String [] args) throws Exception {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') WebDriver driver = new ChromeDriver () driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) driver File source = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (source, new File ('./ Screenshots / Screen .png ')) System.out.println (' se tomó la captura de pantalla ') driver.quit ()}}

El resultado del código anterior se muestra a continuación:

ScreenOutput - Cómo tomar una captura de pantalla en Selenium - Edureka

Y la carpeta contiene la imagen

Ahora, entendamos cómo tomar una captura de pantalla de la prueba fallida

  • Primero,
  • Agregue el archivo XML TestNG.
  • Agregue las dependencias de maven.
  • Cree una clase BaseClass que contenga la instancia de WebDriver.
  • Defina dos funciones, a saber, initialization () y failed ()
  • Llame a estas dos funciones en otra clase, manifestación que hereda la BaseClass.
  • Esta clase de demostración contiene los dos métodos setUp () que llama a la función initialization (), tearDown () ayuda a cerrar el controlador y ScreenshotTest () donde afirmamos la salida real y la esperada.
  • En este caso, afirmaré tanto verdadero como falso, lo que resultará en la falla del caso de prueba.
  • Cree otra clase, ListenersClass, que ayude al WebDriver a escuchar los eventos particulares.
  • Agregue este código en la clase de demostración @Listeners (ListenersClass.class) antes de la función principal para escuchar el caso de prueba.

Puede consultar este código:

BaseClass

package com.edureka import java.io.File import java.io.IOException import org.apache.commons.io.FileUtils import org.openqa.selenium.OutputType import org.openqa.selenium.TakesScreenshot import org.openqa.selenium.WebDriver import org.openqa.selenium.chrome.ChromeDriver import org.testng.annotations.Listeners public class BaseClass {public static WebDriver driver public static void initialization () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedrDesktopchromedriver_win32chromedr exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) try {FileUtils.copyFile (srcFile, new File ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

DemoClass

package com.edureka import org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeMethod import org.testng.annotations.Listeners import org.testng.annotations.Test @Listeners (ListenersClass.class) public la demostración de la clase amplía BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

OyentesClase

package com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass amplía BaseClass implementa ITestListener {public void onTestStart (ITestResult result) {// TODO Método generado automáticamente stub} public void onTestSuccess (Resultado de ITestResult) {// TODO código auxiliar de método generado automáticamente} public void onTestFailure (resultado de ITestResult) {System.out.println ('Prueba fallida') failed ()} public void onTestSkipped (resultado de ITestResult) {// TODO Auto- stub de método generado} public void onTestFailedButWithinSuccessPercentage (resultado de ITestResult) {// TODO stub de método generado automáticamente} public void onStart (contexto de ITestContext) {// TODO stub de método generado automáticamente} public void onFinish (contexto de ITestContext) {// TODO Auto -sub de método generado}}

La salida se representa de esta manera:

Con esto, llegamos al final de este blog “Cómo tomar una captura de pantalla en Selenium WebDriver”. Espero que hayan disfrutado de este artículo y hayan entendido cómo ejecutar un caso de prueba. Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de 'Cómo tomar una captura de pantalla en Selenium WebDriver' y nos comunicaremos con usted. Si desea obtener más información sobre Selenium WebDriver y desarrollar una carrera en el mismo, consulte nuestro que viene con capacitación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta capacitación lo ayudará a comprender en profundidad las pruebas de selenio y lo ayudará a dominar el tema.