ฉันจะพูดคุยในหัวข้อต่อไปนี้:
มาเริ่มกันเลย!
ภาพหน้าจอใน 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 ()}}
ผลลัพธ์ของโค้ดด้านบนแสดงไว้ด้านล่าง:
ถ้างบในแบบสอบถาม 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 และสร้างอาชีพในแบบเดียวกันโปรดดูที่ ซึ่งมาพร้อมกับการฝึกอบรมสดที่นำโดยผู้สอนและประสบการณ์โครงการในชีวิตจริง การฝึกอบรมนี้จะช่วยให้คุณเข้าใจการทดสอบซีลีเนียมในเชิงลึกและช่วยให้คุณมีความเชี่ยวชาญในเรื่องนั้น ๆ