Come fare uno screenshot in Selenium WebDriver



Questo articolo su come acquisire uno screenshot in Selenium WebDriver ti aiuta a imparare come acquisire lo screenshot utilizzando il metodo TakesScreenshot e gli ascoltatori TestNG

Automation Testing ha definito un nuovo rubinetto dei test moderni ed è qui per restare. Tuttavia, se il processo di test fallisce, sarebbe molto scomodo ripetere il test dell'intero script. È qui che gli screenshot tornano utili, poiché aiutano a rilevare istantaneamente i fallimenti dei test. Attraverso questo blog impareremo come fare uno screenshot in formato WebDriver.

Discuterò i seguenti argomenti:

Quindi, iniziamo, gente!





Screenshot in Selenium WebDriver: Perché lo screenshot è richiesto nei test di automazione?

Gli screenshot sono desiderabili per l'analisi dei bug. può acquisire automaticamente screenshot durante l'esecuzione. Supponi di scrivere uno script di test per automatizzare una pagina web, non continueresti a monitorare per vedere se funziona correttamente ogni volta. Lasceresti che la sceneggiatura facesse il suo lavoro e saresti occupato in qualche altro lavoro.

  • Gli screenshot ci aiutano a comprendere il flusso dell'applicazione e controllano se si sta comportando di conseguenza.
  • È necessario digitare l'istanza WebDriver diecast in TakesScreenshot.
  • Aiuta mentre ti esibisci test di navigazione incrociata poiché l'utente richiede di visualizzare i report dell'esecuzione
  • Tracciare l'esecuzione diventerebbe molto facile se stai lavorando su un browser headless.
  • Anche lo screenshot dei test falliti può essere facilmente acquisito.

Ora, andiamo avanti e impariamo come esattamente puoi fare uno screenshot durante il test di un'applicazione.



Screenshot in Selenium WebDriver: come catturare screenshot in Selenium?

Per acquisire uno screenshot in Selenium, possiamo utilizzare un'interfaccia, chiamata TakesScreenshot. Questo metodo iindica il driver, che può catturare uno screenshot e memorizzarlo in modi diversi.

Sintassi:



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

dove OutputType definisce il tipo di output per uno screenshot.

Per acquisire screenshot e archiviarli in una posizione particolare, esiste un metodo chiamato ' getScreenshotAs '

Capiamo questo in dettaglio

Per WebDriver che si estende TakesScreenshot metodo, questo fa il massimo sforzo a seconda del browser per restituire quanto segue in un ordine preferibile:

  • L'intera pagina
  • Finestra corrente
  • Porzione visibile del frame corrente
  • Uno screenshot dell'intero display contenente il browser
  • L'intero contenuto dell'elemento HTML: la parte visibile dell'elemento HTML

Sintassi:

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

dove

  • X è il tipo restituito del metodo
  • La destinazione contiene l'indirizzo di destinazione
  • Lancia se l'implementazione sottostante non supporta l'acquisizione di screenshot.

Scenario di test non riuscito

ha messo a punto alcune nuove fantastiche funzionalità che rendono il test di un'applicazione molto più semplice. Questo perché il consente l'interazione al di fuori della sandbox Javascript. Una delle nuove funzionalità utili è la possibilità di acquisire schermate dal WebDriver.

Puoi fare screenshot in qualsiasi fase del test, ma soprattutto, viene utilizzato per quando un test non riesce e l'acquisizione di schermate aiuta l'analisi in modo da poter vedere cosa è andato storto durante un test fallito. Questo può essere fatto usando Annotazioni TestNG.

Per fare questo, prima, avrò bisogno di

  • Crea una classe e poi implementalaTestNG ' ITestListener ' .
  • Quindi chiama un metodo 'OnTestFailure' .
  • Aggiungi il codice per acquisire lo screenshot con questo metodo.
  • Invece di fare solo lo screenshot, prendi il nome del metodo Test e fai uno screenshot con il nome del test e posizionalo nella cartella di destinazione.

Ora, la domanda è come ottenere l'oggetto driver nella classe TestListeners utilizzando TestNG?

Ti aiuterò a capire quanto sia facile farlo.

Per fare uno screenshot in Selenium, dobbiamo avere un oggetto driver. Ottieni il driver da ITestContext che deve essere impostato nella configurazione di base dove è facile creare la nostra istanza di driver. Spero che voi ragazzi siate chiaro con questo. Andando avanti, daremo uno sguardo alla demo dove ti aiuterò a capire quanto sia semplice fare uno screenshot in Selenium.

Spiegherò qui due diversi programmi in modo da farti un'idea corretta su come fare uno screenshot in Selenium.

è post-laurea come i master

Il primo programma si occupa di come acquisire uno screenshot del test case eseguito con successo. Il secondo programma ti aiuta a capire come fare uno screenshot durante il fallimento del test.

Schermata in Selenium WebDriver: Demo

La prima cosa da fare quando si desidera testare un'applicazione web è avere i file Selenium Jar e le librerie Java. Puoi scegliere un IDE a tua scelta. Preferisco lavorare sull'IDE Eclipse perché è facile da usare.

  • Imposterò il driver del browser su
  • Crea un'istanza del driver con ChromeDriver.
  • Ottieni l'URL della pagina web.
  • Eseguire le azioni corrispondenti.

In questo caso, farò uno screenshot della nostra pagina web ufficiale

Fare riferimento al codice seguente:

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 (' lo screenshot è preso ') driver.quit ()}}

L'output per il codice precedente è illustrato di seguito:

ScreenOutput - Come acquisire screenshot in Selenium - Edureka

E la cartella contiene l'immagine

Adesso capiamo come fare uno screenshot del test fallito

  • Primo,
  • Aggiungi il file XML TestNG.
  • Aggiungi le dipendenze Maven.
  • Crea una classe BaseClass che contiene l'istanza WebDriver.
  • Definisci due funzioni, ovvero initialization () e failed ()
  • Chiama queste due funzioni in un'altra classe, demo che eredita BaseClass.
  • Questa classe Demo contiene i due metodi setUp () che chiama la funzione initialization (), tearDown () aiuta a chiudere il driver e ScreenshotTest () dove asseriamo l'output effettivo e quello atteso.
  • In questo caso, affermerò sia vero che falso, il che si traduce nel fallimento del test case.
  • Crea un'altra classe, ListenersClass che aiuta il WebDriver ad ascoltare gli eventi particolari.
  • Aggiungi questo codice nella classe demo @Listeners (ListenersClass.class) prima della funzione principale per ascoltare il test case.

Puoi fare riferimento a questo codice:

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_win32. 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

pacchetto 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 class demo estende BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

ListenersClass

pacchetto com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass estende BaseClass implementa ITestListener {public void onTestStart (ITestResult result) {// TODO Stub metodo generato automaticamente} public void onTestSuccess (Risultato ITestResult) {// TODO Stub metodo generato automaticamente} public void onTestFailure (ITestResult result) {System.out.println ('Failed Test') failed ()} public void onTestSkipped (ITestResult result) {// TODO Auto- generato il metodo stub} public void onTestFailedButWithinSuccessPercentage (ITestResult result) {// TODO Auto-generated method stub} public void onStart (ITestContext context) {// TODO Auto-generated method stub} public void onFinish (ITestContext context) {// TODO Auto -generated metodo stub}}

L'output è rappresentato in questo modo:

Con questo, arriviamo alla fine di questo blog 'Come fare uno screenshot in Selenium WebDriver'. Spero che questo articolo vi sia piaciuto e che abbiate capito come eseguire un test case. Hai domande per noi? Per favore menzionalo nella sezione commenti di 'Come fare uno screenshot in Selenium WebDriver' e ti risponderemo. Se desideri saperne di più su Selenium WebDriver e costruire una carriera nello stesso, dai un'occhiata al nostro che viene fornito con formazione dal vivo con istruttore e esperienza di progetto nella vita reale. Questa formazione ti aiuterà a comprendere in profondità il test del selenio e ti aiuterà a raggiungere la padronanza dell'argomento.