Hur man tar en skärmdump i Selenium WebDriver



Den här artikeln om hur du tar en skärmdump i Selenium WebDriver hjälper dig att lära dig att fånga skärmdumpen med TakesScreenshot-metoden och TestNG-lyssnare

Automation Testing har definierat en ny kran för moderna tester och den är här för att stanna. Men om testprocessen misslyckas skulle det vara mycket obekvämt att testa hela skriptet igen. Det är här skärmdumpar är till nytta, eftersom de hjälper till att upptäcka testfel direkt. Genom den här bloggen lär vi oss att ta en skärmdump WebDriver.

Jag kommer att diskutera följande ämnen:

Så, låt oss komma igång, folkens!





hur man skriver ut en array php

Skärmdump i Selen WebDriver: Varför krävs skärmdump vid automatiseringstestning?

Skärmdumpar är önskvärda för felanalys. kan automatiskt ta skärmdumpar under körning. Anta att du skriver ett testskript för att automatisera en webbsida, du skulle inte fortsätta övervaka för att se om det fungerar rätt varje gång. Du skulle låta manuset göra sitt jobb och du skulle vara upptagen i något annat arbete.

  • Skärmdumpar hjälper oss att förstå applikationsflödet och kontrollerar om det beter sig i enlighet med detta.
  • Du måste ange WebDriver-förekomst till TakesScreenshot.
  • Det hjälper medan du spelar korsningstestning eftersom användaren behöver se rapporterna om körningen
  • Att spåra utförandet skulle bli mycket enkelt om du arbetar med en huvudlös webbläsare.
  • Skärmdump av testerna som misslyckades kan också enkelt tas.

Låt oss nu gå vidare och lära oss hur du exakt kan ta en skärmdump när du testar en applikation.



Skärmdump i Selen WebDriver: Hur fångar jag skärmdump i Selen?

För att fånga en skärmdump i Selen kan vi använda ett gränssnitt, kallat Tar skärmdump. Denna metod ianger föraren att den kan ta en skärmdump och lagra den på olika sätt.

Syntax:



Filfil = ((TakesScreenshot) drivrutin) .getScreenshotAs (OutputType.FILE) Sträng skärmdumpBase64 = ((TakesScreenshot) drivrutin) .getScreenshotAs (OutputType.BASE64)

var OutputType definierar utgångstypen för en skärmdump.

För att fånga skärmdump och lagra den på en viss plats finns det en metod som kallas “ getScreenshotAs '

Låt oss förstå detta i detalj

För förlängning av WebDriver Tar skärmdump metod, gör detta det bästa beroende på webbläsaren att returnera följande i en föredragen ordning:

  • Hela sidan
  • Aktuellt fönster
  • Synlig del av den aktuella ramen
  • En skärmdump av hela skärmen som innehåller webbläsaren
  • Hela innehållet i HTML-elementet - Den synliga delen av HTML-elementet

Syntax:

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

var

  • X är metodens returtyp
  • Target innehåller destinationsadressen
  • Kastar om den underliggande implementeringen inte stöder inspelning av skärmdump.

Testfallet misslyckades

har kommit med några fantastiska nya funktioner som gör testning av en applikation mycket enklare. Detta beror på att tillåter interaktion utanför Javascript sandlåda. En av de nya användbara funktionerna är att kunna ta skärmdumpar från WebDriver.

Du kan ta skärmdumpar när som helst i testet, men oftast används det för ett test misslyckas och att ta skärmdumpar hjälper analysen så att vi kan se vad som gick fel under ett testfel. Detta kan göras med TestNG-anteckningar.

För att göra detta måste jag först

  • Skapa en klass och implementera sedanTestNG ‘ ITestListener '' .
  • Ring sedan en metod 'OnTestFailure' .
  • Lägg till koden för att ta skärmdumpen i den här metoden.
  • Istället för att bara ta skärmdumpen får du testmetodens namn och tar en skärmdump med testnamnet och placerar den i målmappen.

Nu är frågan hur man får förarobjektet i TestListeners-klassen med TestNG?

Jag hjälper dig att förstå hur enkelt det är att göra det.

För att ta en skärmdump i Selen, måste vi ha ett förarobjekt. Hämta föraren från ITestContext som måste ställas in i basinstallationen där det är enkelt att skapa vår förarinstans. Hoppas ni är klara med detta. Framåt tar vi en titt på demo där jag hjälper dig att förstå hur enkelt det är att ta en skärmdump i Selen.

Jag kommer att förklara två olika program här så att du får en ordentlig uppfattning om hur du tar en skärmdump i Selen.

Första programmet handlar om hur man tar en skärmdump av testfallet som körs framgångsrikt. Det andra programmet hjälper dig att förstå hur du tar en skärmdump under testfelet.

Skärmdump i Selenium WebDriver: Demo

Det allra första du ska göra när du vill testa en webbapplikation är att ha Selenium Jar-filerna och Java-biblioteken. Du kan välja en IDE efter eget val. Jag föredrar att arbeta med Eclipse IDE eftersom det är användarvänligt.

  • Jag ställer in webbläsardrivrutinen på
  • Instantiera drivrutinsinstansen med ChromeDriver.
  • Hämta webbadressen till webbsidan.
  • Utför motsvarande åtgärder.

I det här fallet tar jag en skärmdump av vår officiella hemsida

Se nedanstående kod:

importera java.io.File importera java.io.IOException importera org.apache.commons.io.FileUtils importera org.openqa.selenium.OutputType importera org.openqa.selenium.TakesScreenshot importera org.openqa.selenium.WebDriver importera org.openqa .selenium.chrome.ChromeDriver public class Screen {public static void main (String [] args) throw Exception {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') WebDriver-drivrutin = ny ChromeDriver driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) drivrutin Filkälla = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (källa, ny fil ('./ Screenshots / Screen .png ')) System.out.println (' Skärmdumpen tas ') driver.quit ()}}

Utgången för ovanstående kod visas nedan:

ScreenOutput - Hur man tar skärmdump i Selen - Edureka

Och mappen innehåller bilden

Låt oss nu förstå hur man tar en skärmdump av testet misslyckades

  • Först,
  • Lägg till TestNG XML-filen.
  • Lägg till mavenberoenden.
  • Skapa en klass BaseClass som innehåller WebDriver-instansen.
  • Definiera två funktioner, nämligen initialisering () och misslyckades ()
  • Ring dessa två funktioner i en annan klass, demo som ärver BaseClass.
  • Denna demo-klass innehåller de två metoderna setUp () som kallar initialiseringsfunktionen (), tearDown () hjälper till att stänga drivrutinen och ScreenshotTest () där vi hävdar den faktiska och förväntade produktionen.
  • I det här fallet kommer jag att hävda både sant och falskt, vilket resulterar i att testfallet misslyckas.
  • Skapa en annan klass, ListenersClass, som hjälper WebDriver att lyssna på de specifika händelserna.
  • Lägg till den här koden i demoklassen @Listeners (ListenersClass.class) före huvudfunktionen för att lyssna på testfallet.

Du kan hänvisa till den här koden:

Basklass

paketet 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 importera org.openqa.selenium.chrome.ChromeDriver importera org.testng.annotations.Listeners public class BaseClass {public static WebDriver driver public static void initialization () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win. exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) try {FileUtils.copyFile (srcFile, ny fil ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} fångst (IOException e) {e.printStackTrace ()}} }

Demoklass

paketet 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 klassdemo utökar BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

LyssnareKlass

paketet com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass utökar BaseClass implementerar ITestListener {public void onTestStart (ITestResult result) {// TODO Auto-generated method stub} public void onTestSuccess (ITestResult-resultat) {// TODO Auto-genererad metod stub} public void onTestFailure (ITestResult result) {System.out.println ('Failed Test') misslyckades ()} public void onTestSkipped (ITestResult result) {// TODO Auto- genererad metod stub} offentligt ogiltigt onTestFailedButWithinSuccessPercentage (ITestResult resultat) {// TODO Auto-genererad metod stub} offentligt ogiltigt onStart (ITestContext sammanhang) {// TODO Auto-genererad metod stub} offentligt tomrum onFinish (ITestContext sammanhang) {// TODO Auto -genererad metod stub}}

Produktionen avbildas på detta sätt:

vad gör matte.abs i java
Med detta kommer vi till ett slut på den här 'Hur man tar en skärmdump i Selenium WebDriver' -bloggen. Jag hoppas att ni tyckte om den här artikeln och förstod hur man kör ett testfall. Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i ”Hur man tar en skärmdump i Selenium WebDriver” så återkommer vi till dig. Om du vill lära dig mer om Selenium WebDriver och bygga en karriär i samma, kolla in vår som kommer med instruktörsledad live-utbildning och verklig projektupplevelse. Den här utbildningen hjälper dig att förstå djupt Selen-testning och hjälper dig att behärska ämnet.