Paano Kumuha ng Isang Screenshot Sa Selenium WebDriver



Ang artikulong ito sa kung paano kumuha ng isang screenshot sa Selenium WebDriver ay tumutulong sa iyo na malaman kung paano makunan ang screenshot gamit ang paraan ng TakesScreenshot at mga tagapakinig ng TestNG

Tinukoy ng Automation Testing ang isang bagong faucet ng modernong araw na pagsubok at narito na upang manatili. Gayunpaman kung nabigo ang proseso ng pagsubok, magiging lubhang abala upang muling subukan ang buong script. Dito magagamit ang mga screenshot, dahil nakakatulong silang makita ang mga pagkabigo sa pagsubok kaagad. Sa pamamagitan ng daluyan ng blog na ito matututunan natin kung paano mag-screenshot sa WebDriver.

Tatalakayin ko ang mga sumusunod na paksa:

Kaya, magsimula na tayo, mga kababayan!





Screenshot sa Selenium WebDriver: Bakit kinakailangan ang Screenshot sa pagsubok sa Automation?

Ang mga screenshot ay kanais-nais para sa pagtatasa ng bug. maaaring awtomatikong kumuha ng mga screenshot habang isinasagawa. Ipagpalagay na nagsusulat ka ng isang pagsubok na script upang i-automate ang isang web page, hindi mo mapanatili ang pagsubaybay upang makita kung gumagana ito ng tama sa tuwing. Hahayaan mong gawin ng script ang trabaho nito at masakop ka sa ibang gawain.

  • Tinutulungan kami ng mga screenshot sa pag-unawa sa daloy ng application at suriin kung kumikilos ito nang naaayon.
  • Kailangan mong i-type ang halimbawa ng WebDriver sa TakesScreenshot.
  • Nakakatulong ito habang gumaganap ka pagsubok sa cross-browsing tulad ng kinakailangan ng gumagamit upang tingnan ang mga ulat ng pagpapatupad
  • Ang pagsubaybay sa pagpapatupad ay magiging mas madali kung nagtatrabaho ka sa isang browser na walang ulo.
  • Ang screenshot ng mga pagsubok na nabigo ay madali ring makunan.

Ngayon, hayaan nating magpatuloy at alamin kung paano eksaktong makakakuha ka ng isang screenshot habang sinusubukan ang isang application.



Screenshot sa Selenium WebDriver: Paano makukuha ang Screenshot sa Selenium?

Upang makuha ang isang screenshot sa Selenium, maaari naming magamit ang isang interface, na tinawag TakesScreenshot. Ang pamamaraang ito inatutukoy ang driver, na maaari itong makuha ang isang screenshot at iimbak ito sa iba't ibang mga paraan.

Syntax:



File file = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.Script) String screenshotBase64 = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BASE64)

kung saan OutputType tumutukoy sa uri ng output para sa isang screenshot.

Upang makunan ang screenshot at maiimbak ito sa isang partikular na lokasyon, mayroong isang pamamaraan na tinatawag na ' getScreenshotAs '

mga pagkakaiba sa pagitan ng html at xml

Maunawaan natin ito nang detalyado

Para sa pagpapalawak ng WebDriver TakesScreenshot Paraan, ginagawa nito ang pinakamahusay na pagsisikap depende sa browser upang ibalik ang sumusunod sa isang mas kanais-nais na pagkakasunud-sunod:

  • Ang buong pahina
  • Kasalukuyang window
  • Nakikitang bahagi ng kasalukuyang frame
  • Isang screenshot ng buong display na naglalaman ng browser
  • Ang buong nilalaman ng elemento ng HTML - Ang nakikitang bahagi ng elemento ng HTML

Syntax:

X getScreenshotAs (OutputType (X). Target) ay nagtatapon ng WebDriverException

kung saan

  • Ang X ay ang uri ng pagbabalik ng pamamaraan
  • Hawak ng target ang address ng patutunguhan
  • Nagtatapon kung ang sumusuporta sa pagpapatupad ay hindi sumusuporta sa pagkuha ng screenshot.

Nabigo ang kaso ng pagsubok

ay nakakuha ng ilang mahusay na mga bagong pag-andar na ginagawang mas madali ang pagsubok ng isang application. Ito ay sapagkat ang Pinapayagan ang pakikipag-ugnayan sa labas ng Javascript sandbox. Ang isa sa mga bagong kapaki-pakinabang na pag-andar ay ang pagkuha ng mga screenshot mula sa WebDriver.

Maaari kang kumuha ng mga screenshot sa anumang yugto ng pagsubok, ngunit karamihan, ginagamit ito para sa kapag isang pagsubok nabigo at ang pagkuha ng mga screenshot ay makakatulong sa pagsusuri upang maaari naming makita kung ano ang nagkamali sa panahon ng isang pagkabigo sa pagsubok. Maaari itong magawa gamit Mga anotasyon ng TestNG.

Upang gawin ito, una, kakailanganin ko

  • Lumikha ng isang klase at pagkatapos ay ipatupadTestNG ‘ ITestListener ' .
  • Pagkatapos ay tumawag sa isang pamamaraan 'OnTestFailure' .
  • Idagdag ang code upang makuha ang screenshot sa pamamaraang ito.
  • Sa halip na kunin lamang ang screenshot, kunin ang pangalan ng pamamaraan ng Pagsubok at kumuha ng isang screenshot na may pangalan ng pagsubok at ilagay ito sa folder ng patutunguhan.

Ngayon, ang tanong ay kung paano makukuha ang object ng driver sa klase ng TestListeners gamit ang TestNG?

kung paano sumulat ng klase ng singleton sa java

Tutulungan kita na maunawaan kung gaano kadali gawin ito.

Upang kumuha ng isang screenshot sa Selenium, kailangan naming magkaroon ng isang object ng driver. Kunin ang driver mula sa ITestContext na dapat itakda sa base setup kung saan madaling lumikha ng aming instance ng driver. Inaasahan kong malinaw na kayo. Sa pagpapatuloy, titingnan namin ang demo kung saan tutulungan kita na maunawaan kung gaano kasimple ang kumuha ng isang screenshot sa Selenium.

Ipapaliwanag ko ang dalawang magkakaibang mga programa dito upang makakuha ka ng tamang ideya tungkol sa kung paano kumuha ng isang screenshot sa Selenium.

Ang unang programa ay nakikipag-usap sa kung paano makunan ang isang screenshot ng pagsubok na kaso na matagumpay na natakbo. Tinutulungan ka ng pangalawang programa na maunawaan kung paano kumuha ng isang screenshot habang nabigo ang pagsubok.

Screenshot sa Selenium WebDriver: Demo

Ang pinakaunang bagay na dapat gawin kapag nais mong subukan ang isang web application ay ang magkaroon ng mga file ng Selenium Jar at mga library ng Java. Maaari kang pumili ng isang gusto mong IDE. Mas gusto ko ang pagtatrabaho sa Eclipse IDE dahil ito ay madaling gamitin.

  • Itatakda ko ang driver ng browser sa
  • I-install ang instance ng driver sa ChromeDriver.
  • Kunin ang URL ng webpage.
  • Magsagawa ng kaukulang mga pagkilos.

Sa kasong ito, kukuha ako ng isang screenshot ng aming opisyal na webpage

Sumangguni sa code sa ibaba:

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) throws Exception {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') WebDriver driver = new ChromeDriver driver driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) driver Pinagmulan ng file = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (pinagmulan, bagong File ('./ Screenshots / Screen .png ')) System.out.println (' nakuha ang Screenshot ') driver.quit ()}}

Ang output para sa code sa itaas ay inilalarawan sa ibaba:

ScreenOutput - Paano kumuha ng screenshot sa Selenium - Edureka

At naglalaman ang folder ng imahe

Ngayon, ipaunawa sa amin kung paano kumuha ng isang screenshot ng pagsubok na nabigo

  • Una,
  • Idagdag ang file ng TestNG XML.
  • Idagdag ang mga dependency ng maven.
  • Lumikha ng isang klase ng BaseClass na humahawak sa halimbawa ng WebDriver.
  • Tukuyin ang dalawang pagpapaandar katulad ng pagsisimula () at nabigo ()
  • Tawagin ang dalawang pagpapaandar na ito sa ibang klase, demo na nagmamana ng BaseClass.
  • Ang klase ng Demo na ito ay nagtataglay ng dalawang pamamaraan na itinakda () na kung saan ay tinawag ang pagpapauna () na pagpapaandar, tumutulong ang luha () sa pagsasara ng driver at ScreenshotTest () kung saan iginiit namin ang aktwal at ang inaasahang output.
  • Sa kasong ito, igiit ko ang parehong totoo at mali na magreresulta sa pagkabigo ng pagsubok na kaso.
  • Lumikha ng isa pang klase, ListenersClass na makakatulong sa WebDriver na makinig sa mga partikular na kaganapan.
  • Idagdag ang code na ito sa demo class na @Listeners (ListenersClass.class) bago ang pangunahing pagpapaandar upang makinig sa kaso ng pagsubok.

Maaari kang mag-refer sa code na ito:

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

DemoClass

package com.edureka import org.testng. Assert import org.testng.annotations. AfterMethod import org.testng.annotations. BagoMethod import org.testng.annotations. Ang mga tagapakinig ay nag-import ng org.testng.annotations. Subukan ang @Listeners (ListenersClass.class) publiko pinalawak ng demo ng klase ang BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

Mga Tagapakinig Klase

package com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult pampublikong klase ng ListenersClass ay pinapalawak ng BaseClass na ITestListener {publiko na walang bisa saTestStart (resulta ng ITestResult) {// TODO Awtomatikong nabuong paraan ng}} walang bisa sa publiko saTestSuccess (Resulta ng ITestResult) {// TODO Auto-generated method rint} publiko na walang bisa saTestFailure (resulta ng ITestResult) {Fail.print.nl nabuong paraan ng pag-}} pampublikong walang bisa saTestFailed ButWithinSuccessPercentage (resulta ng ITestResult) {// TODO Awtomatikong nabuong pamamaraan na palumpong} publiko na walang bisa saStart (kontekstong ITestContext) {// TODO Auto-generated na paraan ng tugon} pampublikong walang bisa saFinish (konteksto ng ITestContext) {// TODO Auto -generated na paraan ng pag-ubo}}

Ang output ay inilalarawan sa ganitong paraan:

uri ng mga komento sa java
Sa pamamagitan nito, natapos namin ang blog na 'Paano kumuha ng isang screenshot sa Selenium WebDriver' na blog. Inaasahan kong nalugod kayo sa artikulong ito at naunawaan kung paano magpatakbo ng isang kaso ng pagsubok. May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng 'Paano kumuha ng isang screenshot sa Selenium WebDriver' at babalikan ka namin. Kung nais mong malaman ang higit pa tungkol sa Selenium WebDriver at bumuo ng isang karera sa pareho, pagkatapos suriin ang aming na kasama ng live na pagsasanay na pinamunuan ng magtuturo at karanasan sa proyekto sa totoong buhay. Tutulungan ka ng pagsasanay na ito na maunawaan ang Selenium Testing nang malalim at tutulong sa iyo na makamit ang mastery sa paksa.