วิธีถ่ายภาพหน้าจอใน Selenium WebDriver



บทความเกี่ยวกับวิธีถ่ายภาพหน้าจอใน Selenium WebDriver ช่วยให้คุณเรียนรู้วิธีจับภาพหน้าจอโดยใช้วิธี TakesSc screenshot และผู้ฟัง TestNG

การทดสอบระบบอัตโนมัติได้กำหนด faucet ใหม่ของการทดสอบสมัยใหม่และอยู่ที่นี่ อย่างไรก็ตามหากขั้นตอนการทดสอบล้มเหลวจะไม่สะดวกอย่างมากที่จะทดสอบสคริปต์ทั้งหมดอีกครั้ง นี่คือจุดที่ภาพหน้าจอมีประโยชน์เนื่องจากช่วยตรวจจับความล้มเหลวในการทดสอบได้ทันที ผ่านสื่อของบล็อกนี้เราจะเรียนรู้วิธีการถ่ายภาพหน้าจอใน WebDriver

ฉันจะพูดคุยในหัวข้อต่อไปนี้:

มาเริ่มกันเลย!





ภาพหน้าจอใน Selenium WebDriver: เหตุใดจึงต้องมีภาพหน้าจอในการทดสอบระบบอัตโนมัติ

ภาพหน้าจอเป็นสิ่งที่พึงปรารถนาสำหรับการวิเคราะห์จุดบกพร่อง สามารถจับภาพหน้าจอโดยอัตโนมัติระหว่างการดำเนินการ สมมติว่าคุณเขียนสคริปต์ทดสอบเพื่อทำให้หน้าเว็บเป็นแบบอัตโนมัติคุณจะไม่คอยติดตามดูว่าทำงานถูกต้องทุกครั้งหรือไม่ คุณจะปล่อยให้สคริปต์ทำงานของมันและคุณจะถูกใช้ในงานอื่น ๆ

  • ภาพหน้าจอช่วยให้เราเข้าใจขั้นตอนการสมัครและตรวจสอบว่ามีการทำงานตามปกติหรือไม่
  • คุณต้องพิมพ์อินสแตนซ์ WebDriver เพื่อ TakesSc screenshot
  • ช่วยในขณะที่คุณกำลังแสดง การทดสอบข้ามการท่องเว็บ ตามที่ผู้ใช้ต้องการเพื่อดูรายงานการดำเนินการ
  • การติดตามการดำเนินการจะกลายเป็นเรื่องง่ายมากหากคุณใช้เบราว์เซอร์ที่ไม่มีหัว
  • นอกจากนี้ยังสามารถจับภาพหน้าจอของการทดสอบที่ล้มเหลวได้อย่างง่ายดาย

ตอนนี้ให้เราก้าวไปข้างหน้าและเรียนรู้ว่าคุณสามารถจับภาพหน้าจอขณะทดสอบแอปพลิเคชันได้อย่างไร



ภาพหน้าจอใน Selenium WebDriver: จะจับภาพหน้าจอใน Selenium ได้อย่างไร?

ในการจับภาพหน้าจอในซีลีเนียมเราสามารถใช้อินเทอร์เฟซที่เรียกว่า ใช้เวลา วิธีนี้ iระบุไดรเวอร์ว่าสามารถจับภาพหน้าจอและจัดเก็บในรูปแบบต่างๆ

ไวยากรณ์:



ไฟล์ไฟล์ = ไดรเวอร์ ((TakesSc screenshot)) .getSc screenshotAs (OutputType.FILE) String screenshotBase64 = ไดรเวอร์ ((TakesSc screenshot))

ที่ไหน ประเภทเอาต์พุต กำหนดประเภทเอาต์พุตสำหรับภาพหน้าจอ

ในการจับภาพหน้าจอและจัดเก็บไว้ในสถานที่หนึ่ง ๆ มีวิธีการที่เรียกว่า“ getSc screenshotAs '

มาทำความเข้าใจโดยละเอียดกัน

สำหรับการขยาย WebDriver ใช้เวลา วิธีนี้จะทำให้ดีที่สุดขึ้นอยู่กับเบราว์เซอร์ที่จะส่งคืนสิ่งต่อไปนี้ตามลำดับที่ต้องการ:

  • ทั้งหน้า
  • หน้าต่างปัจจุบัน
  • ส่วนที่มองเห็นได้ของเฟรมปัจจุบัน
  • ภาพหน้าจอของจอแสดงผลทั้งหมดที่มีเบราว์เซอร์
  • เนื้อหาทั้งหมดขององค์ประกอบ HTML - ส่วนที่มองเห็นได้ขององค์ประกอบ HTML

ไวยากรณ์:

X getSc screenshotAs (OutputType (X). target) พ่น WebDriverException

ที่ไหน

  • X คือประเภทการส่งคืนของวิธีการ
  • เป้าหมายเก็บที่อยู่ปลายทาง
  • พ่น หากการใช้งานพื้นฐานไม่รองรับการจับภาพหน้าจอ

กรณีทดสอบล้มเหลว

มีฟังก์ชันใหม่ที่ยอดเยี่ยมที่ช่วยให้การทดสอบแอปพลิเคชันง่ายขึ้นมาก เนื่องจากไฟล์ อนุญาตให้โต้ตอบนอกแซนด์บ็อกซ์ Javascript หนึ่งในฟังก์ชันใหม่ที่มีประโยชน์คือการถ่ายภาพหน้าจอจาก WebDriver

คุณสามารถจับภาพหน้าจอได้ทุกขั้นตอนของการทดสอบ แต่ส่วนใหญ่จะใช้สำหรับการทดสอบ ล้มเหลว และการจับภาพหน้าจอจะช่วยในการวิเคราะห์เพื่อให้เราเห็นสิ่งที่ผิดพลาดระหว่างการทดสอบล้มเหลว ซึ่งสามารถทำได้โดยใช้ คำอธิบายประกอบ TestNG

ในการดำเนินการนี้ก่อนอื่นฉันต้องทำ

  • สร้างคลาสแล้วนำไปใช้TestNG ‘ ITestListener ' .
  • จากนั้นเรียกวิธีการ 'onTestFailure' .
  • เพิ่มรหัสเพื่อถ่ายภาพหน้าจอด้วยวิธีนี้
  • แทนที่จะถ่ายภาพหน้าจอให้รับชื่อวิธีการทดสอบและถ่ายภาพหน้าจอพร้อมชื่อการทดสอบแล้ววางไว้ในโฟลเดอร์ปลายทาง

ตอนนี้คำถามคือจะรับวัตถุไดรเวอร์ในคลาส TestListeners โดยใช้ TestNG ได้อย่างไร?

แนวคิดพื้นฐานเบื้องต้นในการเขียนโปรแกรม sas

ฉันจะช่วยให้คุณเข้าใจว่าการทำเช่นนั้นง่ายเพียงใด

ในการถ่ายภาพหน้าจอในซีลีเนียมเราจำเป็นต้องมีวัตถุไดรเวอร์ รับไดรเวอร์จาก ITestContext ซึ่งต้องตั้งค่าในการตั้งค่าพื้นฐานซึ่งง่ายต่อการสร้างอินสแตนซ์ไดรเวอร์ของเรา หวังว่าพวกคุณจะชัดเจนกับเรื่องนี้ ต่อไปเราจะมาดูการสาธิตซึ่งจะช่วยให้คุณเข้าใจว่าการถ่ายภาพหน้าจอในซีลีเนียมนั้นง่ายเพียงใด

ฉันจะอธิบายสองโปรแกรมที่แตกต่างกันที่นี่เพื่อให้คุณมีความคิดที่ถูกต้องเกี่ยวกับวิธีถ่ายภาพหน้าจอในซีลีเนียม

โปรแกรมแรกเกี่ยวข้องกับวิธีการจับภาพหน้าจอของกรณีทดสอบที่ทำงานได้สำเร็จ โปรแกรมที่สองช่วยให้คุณเข้าใจวิธีถ่ายภาพหน้าจอในระหว่างที่การทดสอบล้มเหลว

ภาพหน้าจอใน Selenium WebDriver: การสาธิต

สิ่งแรกที่ต้องทำเมื่อคุณต้องการทดสอบเว็บแอปพลิเคชันคือการมีไฟล์ Selenium Jar และไลบรารี Java คุณสามารถเลือก IDE ที่คุณต้องการได้ ฉันชอบทำงานกับ Eclipse IDE มากกว่าเพราะใช้งานง่าย

  • ฉันจะตั้งค่าไดรเวอร์ของเบราว์เซอร์เป็น
  • สร้างอินสแตนซ์ของไดรเวอร์ด้วย ChromeDriver
  • รับ URL ของหน้าเว็บ
  • ดำเนินการที่สอดคล้องกัน

ในกรณีนี้ฉันจะถ่ายภาพหน้าจอของหน้าเว็บอย่างเป็นทางการของเรา

อ้างถึงรหัสด้านล่าง:

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 คลาสสาธารณะหน้าจอ {public static void main (String [] args) พ่น Exception {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') ไดรเวอร์ WebDriver = ChromeDriver ใหม่ () driver.get ('http://www.edureka.co/') TakesSc screenshot ts = (TakesSc screenshot) ไดรเวอร์ไฟล์ source = ts.getSc screenshotAs (OutputType.FILE) FileUtils.copyFile (ที่มาไฟล์ใหม่ ('./ screenshot / Screen .png ')) System.out.println (' ภาพหน้าจอถูกถ่าย ') driver.quit ()}}

ผลลัพธ์ของโค้ดด้านบนแสดงไว้ด้านล่าง:

ScreenOutput - วิธีถ่ายภาพหน้าจอใน Selenium - Edureka

ถ้างบในแบบสอบถาม sql

และโฟลเดอร์ประกอบด้วยรูปภาพ

ตอนนี้ให้เราเข้าใจวิธีการจับภาพหน้าจอของการทดสอบที่ล้มเหลว

  • ประการแรก
  • เพิ่มไฟล์ TestNG XML
  • เพิ่มการอ้างอิง maven
  • สร้างคลาส BaseClass ซึ่งเก็บอินสแตนซ์ WebDriver
  • กำหนดสองฟังก์ชันคือ initialization () และ failed ()
  • เรียกฟังก์ชันทั้งสองนี้ในคลาสอื่น การสาธิต ซึ่งสืบทอด BaseClass
  • คลาสสาธิตนี้มีสองเมธอด setUp () ซึ่งเรียกใช้ฟังก์ชัน initialization () tearDown () ช่วยในการปิดไดรเวอร์และ ScreenshotTest () ที่เรายืนยันผลลัพธ์จริงและผลลัพธ์ที่คาดไว้
  • ในกรณีนี้ฉันจะยืนยันทั้งจริงและเท็จซึ่งส่งผลให้กรณีทดสอบล้มเหลว
  • สร้างคลาสอื่น ListenersClass ซึ่งช่วยให้ WebDriver ฟังเหตุการณ์เฉพาะ
  • เพิ่มรหัสนี้ในคลาสสาธิต @Listeners (ListenersClass.class) ก่อนฟังก์ชันหลักเพื่อฟังกรณีทดสอบ

คุณสามารถอ้างถึงรหัสนี้:

BaseClass

แพ็คเกจ 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 คลาสสาธารณะ BaseClass {public static WebDriver driver public static void initialization () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver exe ') driver = ใหม่ ChromeDriver () driver.get (' http://www.edureka.co/ ')} โมฆะสาธารณะล้มเหลว () ไดรเวอร์ {File srcFile = ((TakesSc screenshot)) .getSc screenshotAs (OutputType.FILE) ลอง {FileUtils.copyFile (srcFile, ไฟล์ใหม่ ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'screenshotTaken / tests.jpg'))} จับ (IOException e) {e.printStackTrace ()}} }

DemoClass

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 class demo ขยาย BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeSc screenshotTest () {Assert.assertEquals (true, false)}}

ListenersClass

แพคเกจ com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult คลาสสาธารณะ ListenersClass ขยาย BaseClass ใช้ ITestListener {โมฆะสาธารณะ onTestStart (ITestResult result) {// TODO Auto-created method} เป็นโมฆะสาธารณะ onTestSuc (ผลลัพธ์ ITestResult) {// TODO สร้างขึ้นโดยอัตโนมัติต้นขั้ว} โมฆะสาธารณะ onTestFailure (ผล ITestResult) {System.out.println ('Failed Test') failed ()} โมฆะสาธารณะ onTestSkipped (ผล ITestResult) {// TODO Auto- สร้างเมธอดที่สร้างขึ้น} โมฆะสาธารณะ onTestFailedButWithinSuccessPercentage (ผลลัพธ์ ITestResult) {// TODO สร้างอัตโนมัติเมธอดต้นขั้ว} โมฆะสาธารณะ onStart (บริบท ITestContext) {// TODO เมธอดที่สร้างโดยอัตโนมัติต้นขั้ว} โมฆะสาธารณะ onFinish (บริบท ITestContext) {// TODO อัตโนมัติ - สร้างวิธีต้นขั้ว}}

ผลลัพธ์จะแสดงในลักษณะนี้:

ด้วยเหตุนี้เราจึงปิดท้ายบล็อก 'วิธีถ่ายภาพหน้าจอในบล็อก Selenium WebDriver' ฉันหวังว่าพวกคุณจะสนุกกับบทความนี้และเข้าใจวิธีเรียกใช้กรณีทดสอบ มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของ“ วิธีถ่ายภาพหน้าจอใน Selenium WebDriver” แล้วเราจะติดต่อกลับไป หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Selenium WebDriver และสร้างอาชีพในแบบเดียวกันโปรดดูที่ ซึ่งมาพร้อมกับการฝึกอบรมสดที่นำโดยผู้สอนและประสบการณ์โครงการในชีวิตจริง การฝึกอบรมนี้จะช่วยให้คุณเข้าใจการทดสอบซีลีเนียมในเชิงลึกและช่วยให้คุณมีความเชี่ยวชาญในเรื่องนั้น ๆ