Ako urobiť snímku obrazovky v selenovom WebDriveri



Tento článok o tom, ako snímať snímky obrazovky v aplikácii Selenium WebDriver, vám pomôže naučiť sa, ako snímať snímky obrazovky pomocou metódy TakesSc Screenshot a poslucháčov TestNG

Automation Testing definoval nový faucet moderného testovania a je tu, aby zostal. Ak však proces testovania zlyhá, bolo by veľmi nepohodlné znova otestovať celý skript. To je miesto, kde sa hodia screenshoty, ktoré pomáhajú okamžite zistiť zlyhania testu. Prostredníctvom tohto blogu sa dozvieme, ako vytvoriť snímku obrazovky WebDriver.

Budem diskutovať o nasledujúcich témach:

Takže, začnime, priatelia!





Screenshot v selenovom webovom ovládači: Prečo je v teste automatizácie požadovaný Screenshot?

Screenshoty sú žiaduce pre analýzu chýb. môže počas vykonávania automaticky robiť snímky obrazovky. Predpokladajme, že napíšete testovací skript na automatizáciu webovej stránky, nebudete neustále monitorovať, či zakaždým funguje správne. Nechali by ste skript, aby urobil svoju prácu, a zamestnali by ste sa nejakou inou prácou.

  • Screenshoty nám pomáhajú porozumieť toku aplikácií a kontrolujú, či sa správajú zodpovedajúcim spôsobom.
  • Musíte inštanciu WebDriver napísať na TakesSc Screenshot.
  • Pomáha vám pri hraní krížové prehliadanie pretože používateľ vyžaduje prezeranie správ o vykonaní
  • Sledovanie vykonania by bolo oveľa jednoduchšie, ak pracujete na bezhlavom prehliadači.
  • Tiež je možné ľahko zachytiť snímku obrazovky s neúspešnými testami.

Poďme teraz ďalej a zistime, ako presne môžete počas testovania aplikácie vytvoriť snímku obrazovky.



Screenshot v Selenium WebDriver: Ako zachytiť Screenshot v Selenium?

Na zachytenie snímky obrazovky v seléne môžeme využiť rozhranie s názvom Robí snímku obrazovky. Táto metóda indikuje ovládač, že dokáže zachytiť snímku obrazovky a uložiť ju rôznymi spôsobmi.

Syntax:



Súbor file = (((TakesSc Screenshot) driver) .getSc ScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesSc Screenshot) driver) .getSc ScreenshotAs (OutputType.BASE64)

kde Typ výstupu definuje typ výstupu pre snímku obrazovky.

Na zachytenie snímky obrazovky a jej uloženie na konkrétnom mieste existuje metóda s názvom „ getSc ScreenshotAs

Poďme to pochopiť podrobne

rozdiel medzi rozšíreniami a implementáciami v Jave

Pre rozšírenie WebDriver Robí snímku obrazovky Táto metóda vynakladá maximálne úsilie v závislosti od prehľadávača, aby vrátil nasledujúce položky v preferovanom poradí:

  • Celá stránka
  • Aktuálne okno
  • Viditeľná časť aktuálneho rámca
  • Screenshot celého displeja obsahujúci prehliadač
  • Celý obsah prvku HTML - viditeľná časť prvku HTML

Syntax:

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

kde

  • X je návratový typ metódy
  • Cieľ obsahuje cieľovú adresu
  • Vrhá ak podkladová implementácia nepodporuje snímanie obrazovky.

Testovací prípad zlyhal

prišiel s niekoľkými skvelými novými funkciami, ktoré výrazne uľahčujú testovanie aplikácií. Je to preto, lebo umožňuje interakciu mimo karantény Javascript. Jednou z nových užitočných funkcií je možnosť vytvárať snímky obrazovky z WebDriveru.

Snímky obrazovky môžete robiť v ktorejkoľvek fáze testu, väčšinou sa však používa na testovanie zlyháva vytváranie snímok obrazovky pomáha analýze, aby sme videli, čo sa pokazilo počas zlyhania testu. To je možné vykonať pomocou Anotácie TestNG.

Najskôr to budem musieť urobiť

  • Vytvorte triedu a potom ju implementujteTestNG ‘ ITestListener .
  • Potom zavolajte metódu „OnTestFailure“ .
  • Pridajte kód a vytvorte snímku obrazovky týmto spôsobom.
  • Namiesto vytvorenia snímky obrazovky získajte názov metódy testu, vytvorte snímku obrazovky s názvom testu a umiestnite ju do cieľového priečinka.

Otázkou teraz je, ako dostať objekt ovládača do triedy TestListeners pomocou TestNG?

Pomôžem vám pochopiť, aké ľahké je to urobiť.

Aby sme mohli urobiť snímku obrazovky v seléne, musíme mať objekt ovládača. Získajte ovládač z ITestContext, ktorý je potrebné nastaviť v základnom nastavení, kde je ľahké vytvoriť našu inštanciu ovládača. Dúfam, že máte s tým jasno. Ďalej sa pozrieme na ukážku, kde vám pomôžem pochopiť, aké jednoduché je vytvoriť snímku obrazovky v seléne.

Vysvetľujem tu dva rôzne programy, aby ste mali správnu predstavu o tom, ako vytvoriť snímku obrazovky v seléne.

Prvý program sa zaoberá tým, ako úspešne zachytiť snímku obrazovky testovacieho prípadu. Druhý program vám pomôže pochopiť, ako vytvoriť snímku obrazovky počas zlyhania testu.

Screenshot v selenovom WebDriveri: Ukážka

Úplne prvá vec, ktorú musíte urobiť, keď chcete otestovať webovú aplikáciu, je mať súbory Selenium Jar a knižnice Java. Môžete si zvoliť IDE podľa vášho výberu. Najradšej pracujem na Eclipse IDE, pretože je užívateľsky príjemný.

  • Ovládač prehliadača nastavím na
  • Vytvorte inštanciu ovládača pomocou ChromeDriveru.
  • Získajte adresu URL webovej stránky.
  • Vykonajte zodpovedajúce činnosti.

V takom prípade urobím snímku obrazovky našej oficiálnej webovej stránky

Pozrite si nasledujúci 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 verejná trieda Obrazovka {public static void main (String [] args) vyvolá výnimku {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') Ovládač WebDriver = nový ChromeDriver () driver.get ('http://www.edureka.co/') TakesSc Screenshot ts = (TakesSc Screenshot) driver File source = ts.getSc ScreenshotAs (OutputType.FILE) FileUtils.copyFile (zdroj, nový súbor ('./ Screenshots / Screen) .png ')) System.out.println (' snímka obrazovky je vytvorená ') driver.quit ()}}

Výstup pre vyššie uvedený kód je zobrazený nižšie:

ScreenOutput - Ako vytvoriť snímku obrazovky v seléne - Edureka

A priečinok obsahuje obrázok

Teraz poďme pochopiť, ako urobiť snímku obrazovky s testom, ktorý zlyhal

  • Najprv,
  • Pridajte súbor XML TestNG.
  • Pridajte závislosti závislostí.
  • Vytvorte triedu BaseClass, ktorá obsahuje inštanciu WebDriver.
  • Definujte dve funkcie, a to initialization () a failed ()
  • Zavolajte tieto dve funkcie do inej triedy, ukážka ktorý dedí BaseClass.
  • Táto ukážková trieda obsahuje dve metódy setUp (), ktoré volajú funkciu initialization (), tearDown () pomáha pri zatváraní ovládača a ScreenshotTest (), kde presadzujeme skutočný a očakávaný výstup.
  • V tomto prípade budem tvrdiť ako pravdivé, tak aj nepravdivé, čo má za následok zlyhanie testovacieho prípadu.
  • Vytvorte ďalšiu triedu ListenersClass, ktorá pomôže serveru WebDriver počúvať konkrétne udalosti.
  • Pridajte tento kód do ukážkovej triedy @Listeners (ListenersClass.class) pred hlavnou funkciou, aby ste si mohli vypočuť testovací prípad.

Môžete sa obrátiť na tento kód:

BaseClass

balík 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ážka triedy rozširuje 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 verejná trieda ListenersClass rozširuje BaseClass implementuje ITestListener {public void onTestStart (výsledok ITestResult) {// TODO Automaticky vygenerovaná metóda pahýlu} public void onTestSuccess (ITestResult result) {// TODO Automaticky vygenerovaná metóda pahýlu} public void onTestFailure (ITestResult result) {System.out.println ('Failed Test') failed ()} public void onTestSkipped (ITestResult result) {// TODO Auto- vygenerovaný stub metódy} public void onTestFailedButWithinSuccessPercentage (ITestResult result) {// TODO Auto-generovaný stub metódy} public void onStart (ITestContext context) {// TODO Auto-vygenerovaný stub metódy} public void onFinish (ITestContext context) {// TODO Auto -generovaný pahýl metódy}}

Výstup je znázornený týmto spôsobom:

Týmto sa dostávame ku koncu tohto blogu „Ako vytvoriť snímku obrazovky v softvéri Selenium WebDriver“. Dúfam, že sa vám tento článok páčil a pochopili ste, ako spustiť testovací prípad. Máte na nás otázku? Uveďte to v sekcii komentárov v časti „Ako vytvoriť snímku obrazovky v softvéri Selenium WebDriver“ a my sa vám ozveme. Ak sa chcete dozvedieť viac o webovom ovládači Selenium WebDriver a budovať si kariéru, navštívte našu stránku ktorá prináša živé školenie vedené inštruktorom a skúsenosti s projektmi v reálnom živote. Toto školenie vám pomôže pochopiť testovanie selénu do hĺbky a pomôže vám dosiahnuť osvojenie si témy.