Hvordan ta et skjermbilde i Selen WebDriver



Denne artikkelen om hvordan du tar et skjermbilde i Selenium WebDriver hjelper deg med å lære hvordan du tar skjermbildet ved hjelp av TakesScreenshot-metoden og TestNG-lyttere

Automatiseringstesting har definert en ny kran med moderne testing, og den er kommet for å bli. Men hvis testprosessen mislykkes, vil det være svært upraktisk å teste hele skriptet på nytt. Dette er hvor skjermbilder er nyttige, da de hjelper med å oppdage testfeil umiddelbart. Gjennom mediet til denne bloggen vil vi lære hvordan du tar et skjermbilde i WebDriver.

Jeg skal diskutere følgende emner:

Så la oss komme i gang, folkens!





Skjermbilde i Selenium WebDriver: Hvorfor skjermbilde kreves i automatiseringstesting?

Skjermbilder er ønskelige for feilanalyse. kan automatisk ta skjermbilder under kjøring. Anta at du skriver et testskript for å automatisere en webside, du vil ikke fortsette å overvåke for å se om det fungerer riktig hver gang. Du lar manuset gjøre jobben sin, og du vil være opptatt av noe annet arbeid.

  • Skjermbilder hjelper oss med å forstå applikasjonsflyten og sjekker om den oppfører seg tilsvarende.
  • Du må skrive WebDriver-forekomsten til TakesScreenshot.
  • Det hjelper mens du opptrer cross-surfing testing slik brukeren trenger å se rapportene om utførelsen
  • Å spore utførelsen vil bli mye enkelt hvis du jobber med en hodeløs nettleser.
  • Skjermbilde av testene som mislyktes, kan også enkelt tas.

La oss nå gå videre og lære hvordan du kan ta et skjermbilde mens du tester et program.



Skjermbilde i Selen WebDriver: Hvordan ta skjermbilde i Selen?

For å ta et skjermbilde i Selen kan vi bruke et grensesnitt, kalt TakesScreenshot. Denne metoden jegangir driveren, at den kan ta et skjermbilde og lagre det på forskjellige måter.

Syntaks:



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

hvor OutputType definerer utgangstypen for et skjermbilde.

For å ta skjermbilde og lagre det på et bestemt sted, er det en metode som heter “ getScreenshotAs '

La oss forstå dette i detalj

For utvidelse av WebDriver TakesScreenshot avhengig av nettleseren for å returnere følgende i en foretrukket rekkefølge:

  • Hele siden
  • Gjeldende vindu
  • Synlig del av gjeldende ramme
  • Et skjermbilde av hele skjermen som inneholder nettleseren
  • Hele innholdet i HTML-elementet - Den synlige delen av HTML-elementet

Syntaks:

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

hvor

  • X er returtypen for metoden
  • Target inneholder destinasjonsadressen
  • Kaster hvis den underliggende implementeringen ikke støtter skjermbildeopptak.

Testsaken mislyktes

har kommet med noen flotte nye funksjoner som gjør testing av et program mye enklere. Dette er fordi tillater interaksjon utenfor Javascript sandkasse. En av de nye nyttige funksjonene er å kunne ta skjermbilder fra WebDriver.

Du kan ta skjermbilder når som helst i testen, men for det meste brukes den til når en test mislykkes og å ta skjermbilder hjelper analysen slik at vi kan se hva som gikk galt under en testfeil. Dette kan gjøres ved hjelp av TestNG-merknader.

For å gjøre dette må jeg først

  • Lag en klasse og implementer deretterTestNG ‘ ITestListener ' .
  • Ring deretter en metode ‘OnTestFailure’ .
  • Legg til koden for å ta skjermbildet i denne metoden.
  • I stedet for bare å ta skjermbildet, få testmetodens navn og ta et skjermbilde med testnavnet og legg det i målmappen.

Nå er spørsmålet hvordan man får driverobjektet i TestListeners-klassen ved hjelp av TestNG?

Jeg hjelper deg med å forstå hvor enkelt det er å gjøre det.

For å ta et skjermbilde i Selen, må vi ha et driverobjekt. Få driveren fra ITestContext som må settes i basisoppsettet der det er enkelt å lage vår driverinstans. Håper dere er klare med dette. Fremover tar vi en titt på demoen der jeg vil hjelpe deg med å forstå hvor enkelt det er å ta et skjermbilde i Selen.

Jeg vil forklare to forskjellige programmer her, slik at du får en skikkelig ide om hvordan du tar et skjermbilde i Selen.

Det første programmet tar for seg hvordan du tar et skjermbilde av testsaken som kjøres. Det andre programmet hjelper deg med å forstå hvordan du tar et skjermbilde under testfeilen.

Skjermbilde i Selenium WebDriver: Demo

Det aller første du må gjøre når du vil teste et webapplikasjon, er å ha Selenium Jar-filene og Java-bibliotekene. Du kan velge en IDE etter eget valg. Jeg foretrekker å jobbe med Eclipse IDE fordi den er brukervennlig.

  • Jeg vil sette nettleserdriveren til
  • Instanter driverinstansen med ChromeDriver.
  • Få nettadressen til websiden.
  • Utfør tilsvarende handlinger.

I dette tilfellet vil jeg ta et skjermbilde av vår offisielle nettside

Se koden nedenfor:

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) throw 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 Filkilde = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (kilde, ny fil ('./ Screenshots / Screen .png ')) System.out.println (' Skjermbildet er tatt ') driver.quit ()}}

Utgangen for ovennevnte kode er avbildet nedenfor:

ScreenOutput - Hvordan ta skjermbilde i Selen - Edureka

Og mappen inneholder bildet

hvordan du setter opp formørkelse for java

La oss nå forstå hvordan du tar et skjermbilde av testen mislyktes

  • Først,
  • Legg til TestNG XML-filen.
  • Legg til maven avhengigheter.
  • Opprett en klasse BaseClass som inneholder WebDriver-forekomsten.
  • Definer to funksjoner, nemlig initialisering () og mislykket ()
  • Kall disse to funksjonene i en annen klasse, demo som arver BaseClass.
  • Denne demonstrasjonsklassen inneholder de to metodene setUp () som kaller initialiseringsfunksjonen (), tearDown () hjelper til med å lukke driveren og ScreenshotTest () der vi hevder den faktiske og forventede produksjonen.
  • I dette tilfellet vil jeg hevde både sant og usant som resulterer i svikt i testsaken.
  • Opprett en annen klasse, ListenersClass, som hjelper WebDriver til å lytte til de spesielle hendelsene.
  • Legg til denne koden i demoklassen @Listeners (ListenersClass.class) før hovedfunksjonen for å lytte til testsaken.

Du kan referere til denne koden:

BaseClass

pakke 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 importer 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_win. exe ') driver = ny ChromeDriver () driver.get (' http://www.edureka.co/ ')} tomrom mislyktes () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) prøv {FileUtils.copyFile (srcFile, ny fil ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} fangst (IOException e) {e.printStackTrace ()}} }

Demoklasse

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

LyttereKlasse

pakke com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass utvider BaseClass implementerer ITestListener {public void onTestStart (ITestResult result) {// TODO Auto-generated method stub} public void onTestSuccess (ITestResult-resultat) {// TODO automatisk generert metode stub} offentlig ugyldighet onTestFailure (ITestResult-resultat) {System.out.println ('Mislykket test') mislyktes ()} offentlig tomrom onTestSkipped (ITestResult-resultat) {// TODO Auto- generert metode stub} offentlig ugyldighet onTestFailedButWithinSuccessPercentage (ITestResult resultat) {// TODO Auto-generert metode stub} offentlig ugyldig onStart (ITestContext kontekst) {// TODO Auto-generert metode stub} offentlig ugyldig onFinish (ITestContext kontekst) {// TODO Auto -generert metode stub}}

Produksjonen er avbildet på denne måten:

Med dette kommer vi til en slutt på denne 'Hvordan ta et skjermbilde i Selenium WebDriver' -bloggen. Jeg håper dere likte denne artikkelen og forsto hvordan man skulle kjøre en testsak. Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet i “Hvordan ta et skjermbilde i Selenium WebDriver”, så kommer vi tilbake til deg. Hvis du ønsker å lære mer om Selenium WebDriver og bygge en karriere i det samme, så sjekk ut vår som kommer med instruktørledet live-opplæring og reell prosjektopplevelse. Denne opplæringen vil hjelpe deg med å forstå Selenium Testing i dybden og hjelpe deg med å mestre emnet.