Jak pořídit snímek obrazovky v selenu WebDriver



Tento článek o tom, jak pořídit snímek obrazovky v Selenium WebDriver, vám pomůže naučit se pořídit snímek obrazovky pomocí metody TakesSc Screenshot a posluchačů TestNG

Automation Testing definoval nový faucet moderního testování a je tu, aby zůstal. Pokud však proces testování selže, bylo by velmi nepohodlné znovu otestovat celý skript. Zde se hodí snímky obrazovky, protože pomáhají okamžitě detekovat selhání testů. Prostřednictvím tohoto blogu se naučíme, jak pořídit snímek obrazovky WebDriver.

Budu diskutovat o následujících tématech:

Pojďme tedy začít, přátelé!





Screenshot v Selenium WebDriver: Proč je v Automation testování vyžadován Screenshot?

Screenshoty jsou žádoucí pro analýzu chyb. může během provádění automaticky pořizovat snímky obrazovky. Předpokládejme, že k automatizaci webové stránky napíšete testovací skript, nebudete neustále sledovat, zda pokaždé funguje správně. Nechali byste skript, aby udělal svou práci, a byli byste zaměstnáni nějakou jinou prací.

  • Screenshoty nám pomáhají porozumět toku aplikace a kontrolují, zda se podle toho chová.
  • Musíte odeslat instanci WebDriver na TakesSc Screenshot.
  • Pomáhá vám při hraní křížové procházení testování protože uživatel vyžaduje zobrazení zpráv o provedení
  • Sledování provedení by bylo mnohem jednodušší, pokud pracujete na bezhlavém prohlížeči.
  • Screenshot testů, které selhaly, lze také snadno zachytit.

Nyní se pojďme posunout vpřed a naučíme se, jak přesně můžete pořídit snímek obrazovky při testování aplikace.



Screenshot v Selenium WebDriver: Jak zachytit Screenshot v Selenium?

K pořízení snímku obrazovky v selenu můžeme použít rozhraní s názvem Vezme snímek obrazovky. Tato metoda indikuje ovladač, že může zachytit snímek obrazovky a uložit jej různými způsoby.

Syntax:



Souborový soubor = (ovladač ((TakesSc Screenshot)) .getSc ScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesSc Screenshot) ovladač) .getSc ScreenshotAs (OutputType.BASE64)

kde Typ výstupu definuje typ výstupu pro snímek obrazovky.

Aby bylo možné pořídit snímek obrazovky a uložit jej na konkrétní místo, existuje metoda s názvem „ getSc ScreenshotAs '

Pochopme to podrobně

jak převrátit celé číslo v pythonu

Pro rozšíření WebDriver Vezme snímek obrazovky Tato metoda vyvíjí maximální úsilí v závislosti na prohlížeči, aby vrátil následující v preferovaném pořadí:

  • Celá stránka
  • Aktuální okno
  • Viditelná část aktuálního rámečku
  • Snímek obrazovky celého displeje obsahujícího prohlížeč
  • Celý obsah prvku HTML - Viditelná část prvku HTML

Syntax:

X getSc ScreenshotAs (OutputType (X). Target) vyvolá WebDriverException

kde

  • X je návratový typ metody
  • Cíl obsahuje cílovou adresu
  • Vrhá pokud podkladová implementace nepodporuje snímání obrazovky.

Testovací případ selhal

přišel s několika skvělými novými funkcemi, díky nimž je testování aplikace mnohem jednodušší. Je to proto, že umožňuje interakci mimo karanténu Javascript. Jednou z nových užitečných funkcí je možnost pořizovat snímky obrazovky z WebDriveru.

Screenshoty můžete pořizovat v kterékoli fázi testu, ale většinou se používá při testování selže a pořizování snímků obrazovky pomáhá analýze, abychom mohli zjistit, co se při selhání testu pokazilo. To lze provést pomocí Anotace TestNG.

K tomu nejdříve budu muset

  • Vytvořte třídu a poté ji implementujteTestNG „ ITestListener '' .
  • Pak zavolejte metodu „OnTestFailure“ .
  • Přidejte kód a pořiďte snímek obrazovky v této metodě.
  • Místo pouhého pořízení snímku obrazovky získejte název metody testu, pořiďte snímek obrazovky s názvem testu a umístěte jej do cílové složky.

Nyní je otázkou, jak získat objekt ovladače ve třídě TestListeners pomocí TestNG?

Pomůžu vám pochopit, jak snadné je to udělat.

Chcete-li pořídit snímek obrazovky v selenu, musíme mít objekt ovladače. Získejte ovladač z ITestContext, který musí být nastaven v základním nastavení, kde je snadné vytvořit naši instanci ovladače. Doufám, že v tom máte jasno. V dalším kroku se podíváme na ukázku, kde vám pomůžu pochopit, jak jednoduché je pořídit snímek obrazovky v selenu.

Vysvětlím vám zde dva různé programy, abyste získali správnou představu o tom, jak pořídit snímek obrazovky v selenu.

První program se zabývá tím, jak úspěšně zachytit snímek obrazovky testovacího případu. Druhý program vám pomůže pochopit, jak pořídit snímek obrazovky během selhání testu.

Screenshot v Selenium WebDriver: Ukázka

Úplně první věcí, kterou musíte udělat, když chcete otestovat webovou aplikaci, je mít soubory Selenium Jar a knihovny Java. Můžete si vybrat IDE podle vašeho výběru. Dávám přednost práci na Eclipse IDE, protože je uživatelsky přívětivý.

  • Ovladač prohlížeče nastavím na
  • Vytvořte instanci instance ovladače pomocí ChromeDriveru.
  • Získejte adresu URL webové stránky.
  • Proveďte odpovídající akce.

V tomto případě pořídím snímek obrazovky naší oficiální webové stránky

Viz níže uvedený kód:

import java.io.File import java.io.IOException import org.apache.commons.io.FileUtils import org.openqa.selenium.OutputType import org.openqa.selenium.TakesSc Screenshot import org.openqa.selenium.WebDriver import org.openqa .selenium.chrome.ChromeDriver veřejná třída Screen {public static void main (String [] args) hodí výjimku {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') ovladač WebDriver = nový ChromeDriver () driver.get ('http://www.edureka.co/') TakesSc Screenshot ts = (TakesSc Screenshot) ovladač Zdroj souboru = ts.getSc ScreenshotAs (OutputType.FILE) FileUtils.copyFile (zdroj, nový soubor ('./ Screenshoty / Obrazovka) .png ')) System.out.println (' Snímek obrazovky je vytvořen ') driver.quit ()}}

Výstup pro výše uvedený kód je zobrazen níže:

ScreenOutput - Jak pořídit snímek obrazovky v Selenium - Edureka

A složka obsahuje obrázek

Nyní pochopíme, jak pořídit snímek obrazovky testu, který selhal

  • Za prvé,
  • Přidejte soubor XML TestNG.
  • Přidejte závislost závislostí.
  • Vytvořte třídu BaseClass, která obsahuje instanci WebDriver.
  • Definujte dvě funkce, jmenovitě initialization () a failed ()
  • Zavolejte tyto dvě funkce v jiné třídě, ukázka který dědí BaseClass.
  • Tato ukázková třída obsahuje dvě metody setUp (), která volá funkci initialization (), tearDown () pomáhá při zavírání ovladače a ScreenshotTest (), kde prosazujeme skutečný a očekávaný výstup.
  • V tomto případě budu tvrdit jak pravdivé, tak nepravdivé, což má za následek selhání testovacího případu.
  • Vytvořte další třídu ListenersClass, která WebDriveru pomůže naslouchat konkrétním událostem.
  • Přidejte tento kód do ukázkové třídy @Listeners (ListenersClass.class) před hlavní funkcí, abyste si mohli poslechnout testovací případ.

Můžete odkazovat na tento kód:

BaseClass

balíček 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.TakesSc Screenshot 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_win32 exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {File srcFile = (((TakesSc Screenshot) driver) .getSc ScreenshotAs (OutputType.FILE) try {FileUtils.copyFile (srcFile, new File ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

DemoClass

balíček 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 ukázka třídy rozšiřuje BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeSc ScreenshotTest () {Assert.assertEquals (true, false)}}

ListenersClass

balíček com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult veřejná třída ListenersClass rozšiřuje BaseClass implementuje ITestListener {public void onTestStart (výsledek ITestResult) {// TODO Automaticky generovaná metoda útržku} public void onTestSuccess (ITestResult result) {// TODO Automaticky generovaná metoda útržku} public void onTestFailure (ITestResult result) {System.out.println ('Failed Test') failed ()} public void onTestSkipped (ITestResult result) {// TODO Auto- generovaný útržek metody} public void onTestFailedButWithinSuccessPercentage (ITestResult result) {// TODO Auto-generated method stub} public void onStart (ITestContext context) {// TODO Auto-generated method stub} public void onFinish (ITestContext context) {// TODO Auto -generovaný útržek metody}}

Výstup je znázorněn tímto způsobem:

Tímto ukončujeme blog „How to take a screenshot in Selenium WebDriver“. Doufám, že se vám tento článek líbil a pochopili, jak spustit testovací případ. Máte na nás dotaz? Uveďte to prosím v sekci komentářů „Jak pořídit snímek obrazovky v selenovém WebDriveru“ a my se vám ozveme. Pokud se chcete dozvědět více o Selenium WebDriver a budovat si stejnou kariéru, podívejte se na náš který přichází s živým tréninkem vedeným instruktorem a zkušenostmi z reálného projektu. Toto školení vám pomůže hlouběji porozumět testování selenu a pomůže vám dosáhnout mistrovství v předmětu.