Sådan tager du et skærmbillede i Selen WebDriver



Denne artikel om, hvordan du tager et screenshot i Selenium WebDriver, hjælper dig med at lære, hvordan du tager skærmbilledet ved hjælp af TakesScreenshot-metoden & TestNG-lyttere

Automatiseringstestning har defineret en ny vandhane til moderne test, og den er kommet for at blive. Men hvis testprocessen mislykkes, ville det være meget ubelejligt at teste hele scriptet igen. Dette er hvor skærmbilleder er nyttige, da de hjælper med at opdage testfejl med det samme. Gennem mediet på denne blog vil vi lære at tage et screenshot i WebDriver.

Jeg diskuterer følgende emner:

Så lad os komme i gang, folkens!





Skærmbillede i Selenium WebDriver: Hvorfor er skærmbillede påkrævet ved automatiseringstest?

Screenshots er ønskelige til buganalyse. kan automatisk tage skærmbilleder under udførelse. Antag at du skriver et testscript til automatisering af en webside, og du overvåger ikke for at se, om det fungerer korrekt hver gang. Du ville lade manuskriptet gøre sit job, og du ville være optaget af noget andet arbejde.

  • Screenshots hjælper os med at forstå strømmen af ​​applikationer og kontrollerer, om den opfører sig i overensstemmelse hermed.
  • Du skal indtaste WebDriver-forekomst til TakesScreenshot.
  • Det hjælper, mens du presterer test på tværs af browsere som brugeren har brug for at se rapporterne om udførelsen
  • Sporing af udførelsen ville blive meget let, hvis du arbejder på en hovedløs browser.
  • Skærmbillede af de test, der mislykkedes, kan også let fanges.

Lad os nu gå videre og lære, hvordan du nøjagtigt kan tage et skærmbillede, mens du tester en applikation.



Skærmbillede i selen WebDriver: Hvordan optages skærmbillede i selen?

For at fange et skærmbillede i Selen kan vi bruge en grænseflade, kaldet TakesScreenshot. Denne metode iangiver driveren, at den kan fange et screenshot og gemme det på forskellige måder.

Syntaks:



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

hvor OutputType definerer outputtypen til et screenshot.

For at tage et skærmbillede og gemme det et bestemt sted er der en metode kaldet “ getScreenshotAs '

Lad os forstå dette detaljeret

Til udvidelse af WebDriver TakesScreenshot metode gør dette den bedste indsats afhængigt af browseren for at returnere følgende i en foretrukken rækkefølge:

  • Hele siden
  • Nuværende vindue
  • Synlig del af den aktuelle ramme
  • Et skærmbillede af hele skærmen, der indeholder browseren
  • Hele indholdet af HTML-elementet - Den synlige del af HTML-elementet

Syntaks:

hvordan man laver en klassesingleton
X getScreenshotAs (OutputType (X). Target) kaster WebDriverException

hvor

  • X er metodens returtype
  • Target indeholder destinationsadressen
  • Kaster hvis den underliggende implementering ikke understøtter optagelse af skærmbilleder.

Test tilfælde mislykkedes

er kommet med nogle fantastiske nye funktioner, der gør test af en applikation meget lettere. Dette skyldes, at tillader interaktion uden for Javascript-sandkasse. En af de nye nyttige funktioner er at kunne tage skærmbilleder fra WebDriver.

Du kan tage skærmbilleder på ethvert stadium af testen, men det bruges hovedsagelig til når en test mislykkes og at tage skærmbilleder hjælper analysen, så vi kan se, hvad der gik galt under en testfejl. Dette kan gøres ved hjælp af TestNG-kommentarer.

For at gøre dette skal jeg først

  • Opret en klasse og implementer derefterTestNG ‘ ITestListener '' .
  • Ring derefter til en metode 'OnTestFailure' .
  • Tilføj koden for at tage skærmbilledet i denne metode.
  • I stedet for bare at tage skærmbilledet skal du hente navnet på testmetoden og tage et skærmbillede med testnavnet og placere det i destinationsmappen.

Nu er spørgsmålet, hvordan man får driverobjektet i TestListeners-klassen ved hjælp af TestNG?

Jeg hjælper dig med at forstå, hvor let det er at gøre det.

For at tage et screenshot i Selenium skal vi have et driverobjekt. Få driveren fra ITestContext, som skal indstilles i basisopsætningen, hvor det er let at oprette vores driverinstans. Håber I er klare med dette. Fortsat ser vi på demoen, hvor jeg hjælper dig med at forstå, hvor simpelt det er at tage et screenshot i Selenium.

Jeg vil forklare to forskellige programmer her, så du får en ordentlig idé om, hvordan du tager et skærmbillede i Selen.

Første program beskæftiger sig med, hvordan man tager et skærmbillede af testsagen, der kører med succes. Det andet program hjælper dig med at forstå, hvordan du tager et skærmbillede under testfejlen.

brug af charat i java

Skærmbillede i Selen WebDriver: Demo

Den allerførste ting, du skal gøre, når du vil teste en webapplikation, er at have Selenium Jar-filerne og Java-bibliotekerne. Du kan vælge en IDE efter eget valg. Jeg foretrækker at arbejde på Eclipse IDE, fordi den er brugervenlig.

  • Jeg indstiller browserdriveren til
  • Instantier driverinstansen med ChromeDriver.
  • Få webadressens URL.
  • Udfør tilsvarende handlinger.

I dette tilfælde tager jeg et screenshot af vores officielle webside

Se nedenstående kode:

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 = ny 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 (' Screenshot is taken ') driver.quit ()}}

Outputtet for ovenstående kode er vist nedenfor:

ScreenOutput - Sådan tager du skærmbillede i Selen - Edureka

Og mappen indeholder billedet

Lad os nu forstå, hvordan man tager et screenshot af testen mislykkedes

  • Først,
  • Tilføj TestNG XML-filen.
  • Tilføj maven afhængigheder.
  • Opret en klasse BaseClass, der indeholder WebDriver-forekomsten.
  • Definer to funktioner, nemlig initialisering () og mislykket ()
  • Kald disse to funktioner i en anden klasse, demo som arver BaseClass.
  • Denne demo-klasse indeholder de to metoder setUp (), der kalder initialiseringsfunktionen (), tearDown () hjælper med at lukke driveren og ScreenshotTest (), hvor vi hævder den faktiske og den forventede output.
  • I dette tilfælde vil jeg hævde både sandt og falsk, hvilket resulterer i, at testsagen mislykkes.
  • Opret en anden klasse, ListenersClass, som hjælper WebDriver med at lytte til de særlige begivenheder.
  • Tilføj denne kode i demo-klassen @Listeners (ListenersClass.class) før hovedfunktionen for at lytte til testsagen.

Du kan henvise til denne kode:

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 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_win. exe ') driver = ny ChromeDriver () driver.get (' http://www.edureka.co/ ')} offentlig ugyldighed mislykkedes () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) prøv {FileUtils.copyFile (srcFile, ny fil ('/ C: / Brugere / 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 udvider BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @ Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

LyttereKlasse

java-program for at oprette forbindelse til mysql-databasen
pakke com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class LyttereClass udvider BaseClass implementerer ITestListener {public void onTestStart (ITestResult result) {// TODO Auto-generated method stub} public void onTestSuccess (ITestResult-resultat) {// TODO Auto-genereret metode stub} offentlig ugyldighed onTestFailure (ITestResult-resultat) {System.out.println ('Mislykket test') mislykkedes ()} offentlig ugyldighed onTestSkipped (ITestResult-resultat) {// TODO Auto- genereret metode stub} offentlig ugyldighed onTestFailedButWithinSuccessPercentage (ITestResult resultat) {// TODO Auto-genereret metode stub} offentlig ugyldig onStart (ITestContext kontekst) {// TODO Auto-genereret metode stub} offentlig tomrum onFinish (ITestContext kontekst) {// TODO Auto -genereret metode stub}}

Outputtet er afbildet på denne måde:

Med dette kommer vi til en ende på denne “Sådan tager du et screenshot i Selenium WebDriver” -blog. Jeg håber, at jer nød denne artikel og forstod, hvordan man kører en testsag. Har du et spørgsmål til os? Nævn det i kommentarfeltet i “Sådan tager du et skærmbillede i Selenium WebDriver”, så vender vi tilbage til dig. Hvis du ønsker at lære mere om Selenium WebDriver og opbygge en karriere i det samme, så tjek vores som kommer med instruktørstyret live træning og projektoplevelse i det virkelige liv. Denne træning hjælper dig med at forstå Selenium Testing i dybden og hjælper dig med at opnå mestring over emnet.