Hoe een screenshot te maken in Selenium WebDriver



Dit artikel over het maken van een screenshot in Selenium WebDriver helpt je te leren hoe je de screenshot kunt maken met de TakesScreenshot-methode en TestNG-luisteraars

Automatiseringstesten heeft een nieuwe kraan voor moderne testen gedefinieerd en het is hier om te blijven. Als het testproces echter mislukt, zou het zeer onhandig zijn om het hele script opnieuw te testen. Dit is waar schermafbeeldingen van pas komen, omdat ze testfouten onmiddellijk helpen detecteren. Door middel van deze blog zullen we leren hoe je een screenshot kunt maken in WebDriver.

Ik bespreek de volgende onderwerpen:

Dus laten we beginnen, mensen!





Screenshot in Selenium WebDriver: waarom is een screenshot vereist bij het testen van automatisering?

Schermafbeeldingen zijn wenselijk voor buganalyse. kan automatisch screenshots maken tijdens de uitvoering. Stel dat u een testscript schrijft om een ​​webpagina te automatiseren, dan blijft u niet in de gaten houden om te zien of deze elke keer goed werkt. Je zou het script zijn werk laten doen en je zou met ander werk bezig zijn.

  • Screenshots helpen ons de stroom van applicaties te begrijpen en controleren of deze zich dienovereenkomstig gedraagt.
  • U moet een WebDriver-instantie typen in TakesScreenshot.
  • Het helpt tijdens het optreden cross-browsing testen zoals de gebruiker nodig heeft om de rapporten van de uitvoering te bekijken
  • Het volgen van de uitvoering zou veel gemakkelijker worden als u met een headless browser werkt.
  • Screenshot van de tests die zijn mislukt, kan ook eenvoudig worden vastgelegd.

Laten we nu verder gaan en leren hoe u precies een screenshot kunt maken tijdens het testen van een applicatie.



Screenshot in Selenium WebDriver: Hoe maak je een screenshot in Selenium?

Om een ​​screenshot te maken in Selenium, kunnen we gebruik maken van een interface, genaamd TakesScreenshot. Deze methode igeeft aan dat de bestuurder een screenshot kan maken en deze op verschillende manieren kan opslaan.

Syntaxis:



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

waar Uitgangstype definieert het uitvoertype voor een screenshot.

Om een ​​screenshot te maken en deze op een bepaalde locatie op te slaan, is er een methode genaamd ' getScreenshotAs '

hoe java iterator te gebruiken

Laten we dit in detail begrijpen

Voor uitbreiding van WebDriver TakesScreenshot methode, doet dit de beste poging, afhankelijk van de browser, om het volgende in een voorkeursvolgorde te retourneren:

  • De hele pagina
  • Huidig ​​venster
  • Zichtbaar gedeelte van het huidige frame
  • Een screenshot van het volledige scherm met de browser
  • De volledige inhoud van het HTML-element - Het zichtbare gedeelte van het HTML-element

Syntaxis:

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

waar

  • X is het retourtype van de methode
  • Target bevat het bestemmingsadres
  • Gooit als de onderliggende implementatie het vastleggen van schermafbeeldingen niet ondersteunt.

Testgeval mislukt

heeft een aantal geweldige nieuwe functionaliteiten bedacht die het testen van een applicatie veel gemakkelijker maken. Dit komt doordat de staat interactie buiten de Javascript-sandbox toe. Een van de nieuwe handige functies is het kunnen maken van schermafbeeldingen van de WebDriver.

U kunt in elk stadium van de test screenshots maken, maar meestal wordt het gebruikt voor een test mislukt en het maken van schermafbeeldingen helpt de analyse, zodat we kunnen zien wat er mis is gegaan tijdens een testfout. Dit kan gedaan worden met TestNG-annotaties.

Om dit te doen, moet ik het eerst doen

  • Maak een klasse en implementeerTestNG ‘ ITestListener ' .
  • Roep dan een methode aan ‘OnTestFailure’ .
  • Voeg bij deze methode de code toe om de schermafbeelding te maken.
  • In plaats van alleen de schermafbeelding te maken, haalt u de naam van de testmethode op en maakt u een schermafbeelding met de testnaam en plaatst u deze in de doelmap.

Nu is de vraag hoe je het driverobject in de TestListeners-klasse kunt krijgen met TestNG?

wat is chef in devops

Ik zal je helpen begrijpen hoe gemakkelijk het is om dat te doen.

Om een ​​screenshot te maken in Selenium, hebben we een driverobject nodig. Haal de driver uit de ITestContext die moet worden ingesteld in de basisconfiguratie, waar het eenvoudig is om onze driverinstantie te maken. Ik hoop dat jullie hier duidelijk mee zijn. Als we verder gaan, zullen we de demo bekijken, waar ik u zal helpen begrijpen hoe eenvoudig het is om een ​​screenshot te maken in Selenium.

Ik zal hier twee verschillende programma's uitleggen, zodat je een goed idee krijgt over hoe je een screenshot kunt maken in Selenium.

Het eerste programma behandelt hoe u een screenshot van de succesvolle testcase kunt maken. Het tweede programma helpt u te begrijpen hoe u een screenshot kunt maken tijdens het mislukken van de test.

Screenshot in Selenium WebDriver: Demo

Het allereerste dat u moet doen als u een webtoepassing wilt testen, is de Selenium Jar-bestanden en de Java-bibliotheken hebben. U kunt een IDE naar keuze kiezen. Ik werk het liefst aan de Eclipse IDE omdat deze gebruiksvriendelijk is.

  • Ik zal het browserstuurprogramma instellen op
  • Start de driverinstantie met de ChromeDriver.
  • Haal de URL van de webpagina op.
  • Voer overeenkomstige acties uit.

In dit geval zal ik een screenshot maken van onze officiële webpagina

Raadpleeg de onderstaande code:

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 openbare klasse Scherm {public static void main (String [] args) genereert uitzondering {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') WebDriver-stuurprogramma = nieuwe ChromeDriver () driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) stuurprogramma Bestandsbron = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (bron, nieuw bestand ('./ Screenshots / Screen .png ')) System.out.println (' de schermafbeelding is gemaakt ') driver.quit ()}}

De uitvoer voor de bovenstaande code wordt hieronder weergegeven:

ScreenOutput - Hoe maak je een screenshot in Selenium - Edureka

En de map bevat de afbeelding

Laten we nu eens kijken hoe we een screenshot kunnen maken van de mislukte test

  • Eerste,
  • Voeg het TestNG XML-bestand toe.
  • Voeg de maven-afhankelijkheden toe.
  • Maak een klasse BaseClass die de WebDriver-instantie bevat.
  • Definieer twee functies namelijk initialisatie () en mislukt ()
  • Noem deze twee functies in een andere klasse, demo die de BaseClass erft.
  • Deze Demo-klasse bevat de twee methoden setUp () die de initialisatiefunctie () aanroept, tearDown () helpt bij het sluiten van de driver en ScreenshotTest () waar we de feitelijke en de verwachte uitvoer bevestigen.
  • In dit geval zal ik zowel waar als onwaar beweren, wat resulteert in het mislukken van de testcase.
  • Maak een andere klasse, ListenersClass, die de WebDriver helpt om naar de specifieke gebeurtenissen te luisteren.
  • Voeg deze code toe in de demoklasse @Listeners (ListenersClass.class) vóór de hoofdfunctie om naar de testcase te luisteren.

U kunt naar deze code verwijzen:

BaseClass

pakket 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 openbare klasse BaseClass {openbare statische WebDriver-driver openbare statische ongeldige initialisatie () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver .32chromedriver. exe ') driver = nieuwe ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void mislukt () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) probeer {FileUtils.copyFile (srcFile, nieuw bestand ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

DemoClass

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

ListenersClass

pakket com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass breidt BaseClass implementeert ITestListener {public void onTestStart (ITestResult resultaat) {// TODO Automatisch gegenereerde methode stub} public void onTestSuccess (ITestResult resultaat) {// TODO Auto-generated method stub} public void onTestFailure (ITestResult resultaat) {System.out.println ('Failed Test') mislukt ()} public void onTestSkipped (ITestResult resultaat) {// TODO Auto- gegenereerde methodestub} public void onTestFailedButWithinSuccessPercentage (ITestResult-resultaat) {// TODO Automatisch gegenereerde methodestub} public void onStart (ITestContext-context) {// TODO Automatisch gegenereerde methodestub} public void onFinish (ITestContext-context) {// TODO Auto -generated method stub}}

De output wordt op deze manier weergegeven:

voer een hive-query uit vanaf de opdrachtregel
Hiermee komen we een einde aan deze blog “Hoe maak je een screenshot in Selenium WebDriver”. Ik hoop dat jullie dit artikel leuk vonden en begrepen hebben hoe je een testcase moet uitvoeren. Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van 'Hoe maak je een screenshot in Selenium WebDriver' en we nemen contact met je op. Als je meer wilt weten over Selenium WebDriver en een carrière wilt opbouwen, kijk dan op onze die wordt geleverd met live training onder leiding van een instructeur en real-life projectervaring. Deze training zal je helpen om Selenium Testing grondig te begrijpen en je te helpen het onderwerp onder de knie te krijgen.