Comment prendre une capture d'écran dans Selenium WebDriver



Cet article sur la façon de prendre une capture d'écran dans Selenium WebDriver vous aide à apprendre à capturer la capture d'écran à l'aide de la méthode TakesScreenshot et des écouteurs TestNG

Les tests d'automatisation ont défini un nouveau robinet de tests modernes et il est là pour rester. Cependant, si le processus de test échoue, il serait très peu pratique de retester le script entier. C'est là que les captures d'écran sont utiles, car elles aident à détecter instantanément les échecs de test. À travers ce blog, nous apprendrons à faire une capture d'écran dans WebDriver.

Je vais aborder les sujets suivants:

Alors, commençons, les amis!





Capture d'écran dans Selenium WebDriver: Pourquoi une capture d'écran est-elle requise dans les tests d'automatisation?

Les captures d'écran sont souhaitables pour l'analyse des bogues. peut prendre automatiquement des captures d'écran pendant l'exécution. Supposons que vous écriviez un script de test pour automatiser une page Web, vous ne continueriez pas à surveiller pour voir si cela fonctionne correctement à chaque fois. Vous laisseriez le script faire son travail et vous seriez occupé à un autre travail.

  • Les captures d'écran nous aident à comprendre le flux de l'application et vérifient si elle se comporte en conséquence.
  • Vous devez taper l'instance WebDriver sur TakesScreenshot.
  • Cela aide pendant que vous jouez test de navigation croisée comme l'utilisateur le souhaite pour visualiser les rapports de l'exécution
  • Le suivi de l'exécution deviendrait beaucoup plus facile si vous travaillez sur un navigateur sans tête.
  • Une capture d'écran des tests qui ont échoué peut également être facilement capturée.

Maintenant, allons de l'avant et apprenons comment exactement vous pouvez prendre une capture d'écran tout en testant une application.



theano vs tensorflow vs keras

Capture d'écran dans Selenium WebDriver: Comment capturer une capture d'écran dans Selenium?

Pour capturer une capture d'écran dans Selenium, nous pouvons utiliser une interface, appelée TakesScreenshot. Cette méthode jendique au pilote qu'il peut capturer une capture d'écran et la stocker de différentes manières.

Syntaxe:



Fichier fichier = (pilote (TakesScreenshot)) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = (pilote (TakesScreenshot)) .getScreenshotAs (OutputType.BASE64)

Le type de sortie définit le type de sortie pour une capture d'écran.

Afin de capturer une capture d'écran et de la stocker dans un endroit particulier, il existe une méthode appelée ' getScreenshotAs '

Comprenons cela en détail

Pour l'extension de WebDriver Capture d'écran méthode, cela fait le meilleur effort en fonction du navigateur pour renvoyer les éléments suivants dans un ordre préférable:

  • La page entière
  • Fenêtre actuelle
  • Partie visible de l'image actuelle
  • Une capture d'écran de l'ensemble de l'écran contenant le navigateur
  • Tout le contenu de l'élément HTML - La partie visible de l'élément HTML

Syntaxe:

X getScreenshotAs (OutputType (X). Target) lève WebDriverException

  • X est le type de retour de la méthode
  • La cible contient l'adresse de destination
  • Jette si l'implémentation sous-jacente ne prend pas en charge la capture d'écran.

Le cas de test a échoué

a mis au point de nouvelles fonctionnalités qui facilitent grandement le test d'une application. C'est parce que le permet l'interaction en dehors du bac à sable Javascript. L'une des nouvelles fonctionnalités utiles est de pouvoir prendre des captures d'écran à partir du WebDriver.

Vous pouvez prendre des captures d'écran à n'importe quelle étape du test, mais surtout, elles sont utilisées lors d'un test échoue et la prise de captures d'écran facilite l'analyse afin que nous puissions voir ce qui n'a pas fonctionné lors d'un échec de test. Cela peut être fait en utilisant Annotations TestNG.

Pour ce faire, je dois d'abord

  • Créez une classe puis implémentezTestNG » ITestListener ' .
  • Puis appelez une méthode «OnTestFailure» .
  • Ajoutez le code pour prendre la capture d'écran dans cette méthode.
  • Au lieu de simplement prendre la capture d'écran, obtenez le nom de la méthode de test et prenez une capture d'écran avec le nom du test et placez-la dans le dossier de destination.

Maintenant, la question est de savoir comment obtenir l'objet pilote dans la classe TestListeners à l'aide de TestNG?

Je vais vous aider à comprendre à quel point il est facile de le faire.

Pour prendre une capture d'écran dans Selenium, nous devons avoir un objet pilote. Obtenez le pilote de ITestContext qui doit être défini dans la configuration de base où il est facile de créer notre instance de pilote. J'espère que vous êtes clair avec ça. À l'avenir, nous allons jeter un œil à la démo où je vais vous aider à comprendre à quel point il est simple de prendre une capture d'écran dans Selenium.

Je vais expliquer ici deux programmes différents afin que vous ayez une bonne idée de la façon de prendre une capture d'écran dans Selenium.

Le premier programme explique comment capturer une capture d'écran du scénario de test exécuté avec succès. Le deuxième programme vous aide à comprendre comment prendre une capture d'écran pendant l'échec du test.

Capture d'écran dans Selenium WebDriver: Démo

La toute première chose à faire lorsque vous souhaitez tester une application Web est d'avoir les fichiers Selenium Jar et les bibliothèques Java. Vous pouvez choisir un IDE de votre choix. Je préfère travailler sur l'IDE Eclipse car il est convivial.

  • Je vais définir le pilote du navigateur sur
  • Instanciez l'instance du pilote avec ChromeDriver.
  • Obtenez l'URL de la page Web.
  • Effectuez les actions correspondantes.

Dans ce cas, je prendrai une capture d'écran de notre page Web officielle

Reportez-vous au code ci-dessous:

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 classe publique Screen {public static void main (String [] args) lance l'exception {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') Pilote WebDriver = nouveau ChromeDriver () driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) driver File source = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (source, nouveau fichier ('./ Screenshots / Screen .png ')) System.out.println (' la capture d'écran est prise ') driver.quit ()}}

La sortie pour le code ci-dessus est illustrée ci-dessous:

ScreenOutput - Comment faire une capture d

Et le dossier contient l'image

Maintenant, voyons comment prendre une capture d'écran du test a échoué

  • Premier,
  • Ajoutez le fichier XML TestNG.
  • Ajoutez les dépendances maven.
  • Créez une classe BaseClass qui contient l'instance WebDriver.
  • Définissez deux fonctions à savoir initialisation () et échec ()
  • Appelez ces deux fonctions dans une autre classe, démo qui hérite de BaseClass.
  • Cette classe Demo contient les deux méthodes setUp () qui appelle la fonction initialization (), tearDown () aide à fermer le pilote et ScreenshotTest () où nous affirmons la sortie réelle et attendue.
  • Dans ce cas, je vais affirmer à la fois vrai et faux, ce qui entraîne l'échec du scénario de test.
  • Créez une autre classe, ListenersClass, qui aide le WebDriver à écouter les événements particuliers.
  • Ajoutez ce code dans la classe de démonstration @Listeners (ListenersClass.class) avant la fonction principale afin d'écouter le cas de test.

Vous pouvez vous référer à ce code:

BaseClass

package 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 pilote WebDriver public static void initialization () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32ch exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) try {FileUtils.copyFile (srcFile, new File ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

DémoClasse

package 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 la démonstration de classe étend BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

Auditeurs

package com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult classe publique ListenersClass étend BaseClass implémente ITestListener {public void onTestStart (résultat ITestResult) {// TODO stub de méthode générée automatiquement} public void onTestSuccess (ITestResult result) {// TODO Auto-generated method stub} public void onTestFailure (ITestResult result) {System.out.println ('Failed Test') failed ()} public void onTestSkipped (ITestResult result) {// TODO Auto- stub de méthode généré} public void onTestFailedButWithinSuccessPercentage (résultat ITestResult) {// TODO stub de méthode généré automatiquement} public void onStart (contexte ITestContext) {// TODO stub de méthode généré automatiquement} public void onFinish (contexte ITestContext) {// TODO Auto -generated method stub}}

La sortie est représentée de cette manière:

Avec cela, nous arrivons à la fin de ce blog «Comment faire une capture d'écran dans Selenium WebDriver». J'espère que vous avez apprécié cet article et que vous avez compris comment exécuter un cas de test. Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de «Comment faire une capture d'écran dans Selenium WebDriver» et nous vous répondrons. Si vous souhaitez en savoir plus sur Selenium WebDriver et vous lancer dans la même carrière, consultez notre qui vient avec une formation en direct animée par un instructeur et une expérience de projet réelle. Cette formation vous aidera à comprendre en profondeur les tests de sélénium et vous aidera à maîtriser le sujet.