So machen Sie einen Screenshot in Selenium WebDriver



In diesem Artikel zum Erstellen eines Screenshots in Selenium WebDriver erfahren Sie, wie Sie den Screenshot mithilfe der TakesScreenshot-Methode und der TestNG-Listener erfassen

Automation Testing hat einen neuen Wasserhahn für moderne Tests definiert und ist hier, um zu bleiben. Wenn der Testprozess jedoch fehlschlägt, ist es äußerst unpraktisch, das gesamte Skript erneut zu testen. Hier bieten sich Screenshots an, mit denen Testfehler sofort erkannt werden können. In diesem Blog lernen wir, wie man einen Screenshot macht WebDriver.

Ich werde die folgenden Themen diskutieren:

c ++ Sortierarrays

Also, lasst uns anfangen, Leute!





Screenshot in Selenium WebDriver: Warum ist ein Screenshot für Automatisierungstests erforderlich?

Screenshots sind für die Fehleranalyse wünschenswert. kann während der Ausführung automatisch Screenshots machen. Angenommen, Sie schreiben ein Testskript, um eine Webseite zu automatisieren, und Sie würden nicht jedes Mal überwachen, ob es richtig funktioniert. Sie würden das Skript seine Arbeit machen lassen und wären mit einer anderen Arbeit beschäftigt.

  • Screenshots helfen uns, den Ablauf der Anwendung zu verstehen und prüfen, ob sie sich entsprechend verhält.
  • Sie müssen die WebDriver-Instanz in TakesScreenshot typisieren.
  • Es hilft, während Sie auftreten Cross-Browsing-Tests da der Benutzer die Berichte der Ausführung anzeigen muss
  • Das Verfolgen der Ausführung wird sehr einfach, wenn Sie an einem kopflosen Browser arbeiten.
  • Ein Screenshot der fehlgeschlagenen Tests kann ebenfalls einfach erfasst werden.

Lassen Sie uns nun fortfahren und erfahren, wie genau Sie beim Testen einer Anwendung einen Screenshot aufnehmen können.



Screenshot in Selen WebDriver: Wie wird ein Screenshot in Selen aufgenommen?

Um einen Screenshot in Selenium aufzunehmen, können wir eine Schnittstelle namens verwenden TakesScreenshot. Diese Methode iweist den Treiber darauf hin, dass er einen Screenshot aufnehmen und auf verschiedene Arten speichern kann.

Syntax:



Datei file = ((TakesScreenshot) -Treiber) .getScreenshotAs (OutputType.FILE) String screenhotBase64 = ((TakesScreenshot) -Treiber) .getScreenshotAs (OutputType.BASE64)

wo Ausgabetyp Definiert den Ausgabetyp für einen Screenshot.

Um einen Screenshot aufzunehmen und an einem bestimmten Ort zu speichern, gibt es eine Methode namens „ getScreenshotAs ''

Lassen Sie uns dies im Detail verstehen

Für WebDriver-Erweiterungen TakesScreenshot Dies ist je nach Browser die beste Anstrengung, um Folgendes in einer bevorzugten Reihenfolge zurückzugeben:

  • Die gesamte Seite
  • Aktuelles Fenster
  • Sichtbarer Teil des aktuellen Rahmens
  • Ein Screenshot der gesamten Anzeige mit dem Browser
  • Der gesamte Inhalt des HTML-Elements - Der sichtbare Teil des HTML-Elements

Syntax:

X getScreenshotAs (OutputType (X). Target) löst eine WebDriverException aus

wo

  • X ist der Rückgabetyp der Methode
  • Ziel enthält die Zieladresse
  • Würfe Wenn die zugrunde liegende Implementierung die Aufnahme von Screenshots nicht unterstützt.

Testfall fehlgeschlagen

hat einige großartige neue Funktionen entwickelt, die das Testen einer Anwendung erheblich vereinfachen. Das liegt daran, dass die Ermöglicht die Interaktion außerhalb der Javascript-Sandbox. Eine der neuen nützlichen Funktionen ist das Erstellen von Screenshots vom WebDriver.

Sie können in jeder Phase des Tests Screenshots machen, diese werden jedoch meistens für Testzwecke verwendet schlägt fehl Das Aufnehmen von Screenshots hilft bei der Analyse, damit wir sehen können, was während eines Testfehlers schief gelaufen ist. Dies kann mit erfolgen TestNG-Anmerkungen.

Dazu muss ich zuerst

  • Erstellen Sie eine Klasse und implementieren Sie sieTestNG ITestListener ' .
  • Rufen Sie dann eine Methode auf ‘OnTestFailure’ .
  • Fügen Sie den Code hinzu, um den Screenshot in dieser Methode aufzunehmen.
  • Anstatt nur den Screenshot aufzunehmen, rufen Sie den Namen der Testmethode ab, machen Sie einen Screenshot mit dem Testnamen und legen Sie ihn im Zielordner ab.

Die Frage ist nun, wie das Treiberobjekt in der TestListeners-Klasse mit TestNG abgerufen werden kann.

Ich werde Ihnen helfen zu verstehen, wie einfach das ist.

Um einen Screenshot in Selenium zu machen, benötigen wir ein Treiberobjekt. Holen Sie sich den Treiber aus dem ITestContext, der im Basis-Setup festgelegt werden muss, wo es einfach ist, unsere Treiberinstanz zu erstellen. Hoffe ihr seid klar damit. In Zukunft werfen wir einen Blick auf die Demo, in der ich Ihnen helfen werde, zu verstehen, wie einfach es ist, einen Screenshot in Selenium zu erstellen.

Ich werde hier zwei verschiedene Programme erklären, damit Sie eine genaue Vorstellung davon bekommen, wie Sie einen Screenshot in Selenium machen.

Das erste Programm befasst sich mit der erfolgreichen Erfassung eines Screenshots des Testfalls. Das zweite Programm hilft Ihnen zu verstehen, wie Sie während des Testfehlers einen Screenshot erstellen.

Screenshot in Selenium WebDriver: Demo

Das allererste, was Sie tun müssen, wenn Sie eine Webanwendung testen möchten, sind die Selenium Jar-Dateien und die Java-Bibliotheken. Sie können eine IDE Ihrer Wahl auswählen. Ich arbeite lieber an der Eclipse-IDE, weil sie benutzerfreundlich ist.

  • Ich werde den Browsertreiber auf einstellen
  • Instanziieren Sie die Treiberinstanz mit dem ChromeDriver.
  • Holen Sie sich die URL der Webseite.
  • Führen Sie entsprechende Aktionen aus.

In diesem Fall mache ich einen Screenshot unserer offiziellen Webseite

Siehe folgenden 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 public class Screen {public statisch void main (String [] args) löst eine Ausnahme aus {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 (Quelle, neue Datei ('./ Screenshots / Screen) .png ')) System.out.println (' der Screenshot wird aufgenommen ') driver.quit ()}}

Die Ausgabe für den obigen Code ist unten dargestellt:

ScreenOutput - So machen Sie einen Screenshot in Selenium - Edureka

Und der Ordner enthält das Bild

Lassen Sie uns nun verstehen, wie ein Screenshot des fehlgeschlagenen Tests erstellt werden kann

  • Zuerst,
  • Fügen Sie die TestNG-XML-Datei hinzu.
  • Fügen Sie die Maven-Abhängigkeiten hinzu.
  • Erstellen Sie eine Klasse BaseClass, die die WebDriver-Instanz enthält.
  • Definieren Sie zwei Funktionen, nämlich initialization () und failed ()
  • Rufen Sie diese beiden Funktionen in einer anderen Klasse auf. Demo welches die BaseClass erbt.
  • Diese Demo-Klasse enthält die beiden Methoden setUp (), die die Funktion initialization () aufrufen. TearDown () hilft beim Schließen des Treibers und ScreenshotTest (), wobei wir die tatsächliche und die erwartete Ausgabe bestätigen.
  • In diesem Fall werde ich sowohl wahr als auch falsch behaupten, was zum Scheitern des Testfalls führt.
  • Erstellen Sie eine weitere Klasse, ListenersClass, mit der der WebDriver die jeweiligen Ereignisse abhören kann.
  • Fügen Sie diesen Code in der Demo-Klasse @Listeners (ListenersClass.class) vor der Hauptfunktion hinzu, um den Testfall anzuhören.

Sie können auf diesen Code verweisen:

Basisklasse

Paket 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 öffentliche Klasse BaseClass {öffentlicher statischer WebDriver-Treiber 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 () {Datei srcFile = ((TakesScreenshot) Treiber) .getScreenshotAs (OutputType.FILE) versuchen {FileUtils.copyFile (srcFile, neue Datei ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }}

DemoClass

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

ListenersClass

Paket com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult öffentliche Klasse ListenersClass erweitert BaseClass implementiert ITestListener {public void onTestStart (ITestResult-Ergebnis) {// TODO Automatisch generierte Methode stub} public void onTestSuccess (ITestResult-Ergebnis) {// TODO Automatisch generierter Methodenstub} public void onTestFailure (ITestResult-Ergebnis) {System.out.println ('Fehlgeschlagener Test') fehlgeschlagen ()} public void onTestSkipped (ITestResult-Ergebnis) {// TODO Auto- generierter Methodenstub} public void onTestFailedButWithinSuccessPercentage (ITestResult-Ergebnis) {// TODO Automatisch generierter Methodenstub} public void onStart (ITestContext-Kontext) {// TODO Automatisch generierter Methodenstub} public void onFinish (ITestContext-Kontext) {// TODO Auto -generierte Methode stub}}

Die Ausgabe wird folgendermaßen dargestellt:

Damit beenden wir den Blog „So machen Sie einen Screenshot in Selenium WebDriver“. Ich hoffe, euch hat dieser Artikel gefallen und ihr habt verstanden, wie man einen Testfall ausführt. Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich von „So machen Sie einen Screenshot in Selenium WebDriver“ und wir werden uns bei Ihnen melden. Wenn Sie mehr über Selenium WebDriver erfahren und gleichzeitig eine Karriere aufbauen möchten, lesen Sie unsere Dies beinhaltet ein von Lehrern geführtes Live-Training und praktische Projekterfahrung. Diese Schulung hilft Ihnen, die Selentests gründlich zu verstehen und das Thema zu beherrschen.