Com fer una captura de pantalla a Selenium WebDriver



Aquest article sobre com fer una captura de pantalla a Selenium WebDriver us ajuda a aprendre a capturar la captura de pantalla mitjançant el mètode TakesScreenshot i els oients TestNG

Les proves d'automatització han definit una nova aixeta de les proves modernes i és aquí per quedar-se. Tanmateix, si falla el procés de prova, seria molt incòmode tornar a provar tot l'script. Aquí és on les captures de pantalla són útils, ja que ajuden a detectar fallades de prova a l’instant. Mitjançant aquest bloc aprendrem com fer una captura de pantalla WebDriver.

Parlaré dels temes següents:

Comencem, doncs, gent!





Captura de pantalla a Selenium WebDriver: per què és necessària una captura de pantalla a les proves d'automatització?

Les captures de pantalla són desitjables per a l'anàlisi d'errors. pot fer captures de pantalla automàticament durant l'execució. Suposem que escriviu un script de prova per automatitzar una pàgina web, no seguiríeu supervisant si cada cop funciona correctament. Deixaries que el guió fes la seva feina i estiguessis ocupat en algun altre treball.

  • Les captures de pantalla ens ajuden a entendre el flux de l’aplicació i comprovem si té un comportament adequat.
  • Heu d’escriure la instància de WebDriver a TakesScreenshot.
  • Ajuda mentre es realitza proves de navegació creuada ja que l'usuari necessita veure els informes de l'execució
  • Fer un seguiment de l’execució seria molt més senzill si esteu treballant en un navegador sense cap.
  • També es pot capturar fàcilment la captura de pantalla de les proves que han fallat.

Ara, anem a seguir endavant i aprenem exactament com podeu fer una captura de pantalla mentre proveu una aplicació.



Captura de pantalla a Selenium WebDriver: Com capturar una captura de pantalla a Selenium?

Per capturar una captura de pantalla a Selenium, podem fer servir una interfície anomenada Captura de pantalla. Aquest mètode iindica que el controlador pot capturar una captura de pantalla i emmagatzemar-la de diferents maneres.

Sintaxi:



File file = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BASE64)

on Tipus de sortida defineix el tipus de sortida per a una captura de pantalla.

Per tal de capturar captures de pantalla i emmagatzemar-les en un lloc concret, hi ha un mètode anomenat ' getScreenshotAs '

Anem a entendre-ho en detall

Per a l'extensió de WebDriver Captura de pantalla mètode, això fa el millor esforç en funció del navegador per retornar el següent en un ordre preferible:

  • Tota la pàgina
  • Finestra actual
  • Part visible del marc actual
  • Una captura de pantalla de tota la pantalla que conté el navegador
  • Tot el contingut de l'element HTML: la part visible de l'element HTML

Sintaxi:

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

on

  • X és el tipus de retorn del mètode
  • L'objectiu té l'adreça de destinació
  • Llançaments si la implementació subjacent no admet la captura de pantalla.

Cas de prova fallit

ha presentat algunes noves funcions fantàstiques que faciliten molt la prova d'una aplicació. Això es deu al fet que permet la interacció fora del sandbox Javascript. Una de les noves funcionalitats útils és poder fer captures de pantalla del WebDriver.

afegiu dos números a Java

Podeu fer captures de pantalla en qualsevol etapa de la prova, però, sobretot, s’utilitza quan es fa una prova falla i fer captures de pantalla ajuda a l'anàlisi perquè puguem veure què ha fallat durant un error de prova. Això es pot fer mitjançant Anotacions TestNG.

Per fer-ho, primer, ho necessitaré

  • Creeu una classe i després implementeu-laTestNG ' ITestListener ' .
  • A continuació, truqueu a un mètode 'OnTestFailure' .
  • Afegiu el codi per fer la captura de pantalla amb aquest mètode.
  • En lloc de fer només la captura de pantalla, obteniu el nom del mètode de prova i feu una captura de pantalla amb el nom de la prova i col·loqueu-la a la carpeta de destinació.

Ara, la pregunta és com obtenir l'objecte del controlador a la classe TestListeners mitjançant TestNG?

T’ajudaré a entendre el fàcil que és fer-ho.

Per fer una captura de pantalla a Selenium, hem de tenir un objecte controlador. Obteniu el controlador d’ITestContext que s’ha d’establir a la configuració base, on és fàcil crear la nostra instància de controlador. Espero que ho tingueu clar. Seguint endavant, donarem una ullada a la demostració, on us ajudaré a entendre el senzill que és fer una captura de pantalla a Selenium.

Aquí explicaré dos programes diferents perquè tingueu una idea adequada de com fer una captura de pantalla a Selenium.

El primer programa tracta de com capturar una captura de pantalla del cas de prova amb èxit. El segon programa us ajuda a entendre com fer una captura de pantalla durant el fracàs de la prova.

Captura de pantalla a Selenium WebDriver: Demostració

El primer que cal fer quan es vol provar una aplicació web és tenir els fitxers Selenium Jar i les biblioteques Java. Podeu triar un IDE que vulgueu. Prefereixo treballar a l'IDE Eclipse perquè és fàcil d'utilitzar.

  • Establiré el controlador del navegador a
  • Instanteu la instància del controlador amb ChromeDriver.
  • Obteniu l'URL de la pàgina web.
  • Realitzar les accions corresponents.

En aquest cas, faré una captura de pantalla de la nostra pàgina web oficial

Consulteu el codi següent:

com escriure un mètode d’anul·lació a Java
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 Pantalla {public static void main (String [] args) llança Excepció {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') Controlador WebDriver = nou ChromeDriver driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) controlador Font del fitxer = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (font, nou fitxer ('./ Captures / Pantalla) .png ')) System.out.println (' es captura la captura de pantalla ') driver.quit ()}}

A continuació es mostra la sortida del codi anterior:

ScreenOutput - Com fer captures de pantalla a Selenium - Edureka

I la carpeta conté la imatge

Ara, entenem com fer una captura de pantalla de la prova fallida

  • Primer,
  • Afegiu el fitxer XML TestNG.
  • Afegiu les dependències maven.
  • Creeu una classe BaseClass que contingui la instància de WebDriver.
  • Definiu dues funcions, a saber, inicialització () i fallida ()
  • Anomeneu aquestes dues funcions en una altra classe, demostració que hereta la BaseClass.
  • Aquesta classe Demo conté els dos mètodes setUp () que crida la funció initialization (), tearDown () ajuda a tancar el controlador i ScreenshotTest () on afirmem la sortida real i esperada.
  • En aquest cas, afirmaré tant el veritable com el fals, el que resulta en el fracàs del cas de prova.
  • Creeu una altra classe, ListenersClass que ajudi el WebDriver a escoltar els esdeveniments en particular.
  • Afegiu aquest codi a la classe de demostració @Listeners (ListenersClass.class) abans de la funció principal per escoltar el cas de prova.

Podeu fer referència a aquest codi:

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_win32ch. exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) try {FileUtils.copyFile (srcFile, fitxer nou ('/ 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ó de la classe amplia BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

Classe d’oients

package com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass extends BaseClass implements ITestListener {public void onTestStart (resultat ITestResult) {// TODO mètode generat automàticament stub} public void onTestSuccess (Resultat ITestResult) {// TODO mètode generat automàticament stub} public void onTestFailure (resultat ITestResult) {System.out.println ('Failed Test') failed ()} public void onTestSkipped (ITestResult result) {// TODO Auto- generat mètode stub} public void onTestFailedButWithinSuccessPercentage (resultat ITestResult) {// TODO mètode generat automàticament stub} public void onStart (context ITestContext) {// TODO mètode generat automàticament stub} public void onFinish (ITestContext context) {// TODO Auto mètode generat stub}}

La sortida es representa d'aquesta manera:

Amb això, arribem al final d’aquest bloc “Com fer una captura de pantalla a Selenium WebDriver”. Espero que us hagi agradat aquest article i hàgiu entès com fer un cas de prova. Tens alguna pregunta? Esmenteu-lo a la secció de comentaris de 'Com fer una captura de pantalla a Selenium WebDriver' i us respondrem. Si voleu obtenir més informació sobre Selenium WebDriver i construir una carrera professional al mateix, consulteu el nostre que inclou formació en directe dirigida per un instructor i experiència en projectes reals. Aquesta formació us ajudarà a comprendre en profunditat les proves de seleni i us ajudarà a dominar el tema.