Cách chụp ảnh màn hình trong Selenium WebDriver



Bài viết này về cách chụp ảnh màn hình trong Selenium WebDriver giúp bạn tìm hiểu cách chụp ảnh màn hình bằng phương pháp TakesScreenshot & trình nghe TestNG

Kiểm tra tự động hóa đã xác định một vòi mới của thử nghiệm hiện đại và nó sẽ tồn tại ở đây. Tuy nhiên, nếu quá trình kiểm thử không thành công, sẽ rất bất tiện khi kiểm tra lại toàn bộ tập lệnh. Đây là lúc ảnh chụp màn hình có ích, vì chúng giúp phát hiện các lỗi kiểm tra ngay lập tức. Thông qua phương tiện của blog này, chúng tôi sẽ học cách chụp ảnh màn hình trong WebDriver.

Tôi sẽ thảo luận về các chủ đề sau:

Vì vậy, hãy bắt đầu, các bạn!





Ảnh chụp màn hình trong Selenium WebDriver: Tại sao cần có Ảnh chụp màn hình trong thử nghiệm Tự động hóa?

Ảnh chụp màn hình là mong muốn để phân tích lỗi. có thể tự động chụp ảnh màn hình trong quá trình thực thi. Giả sử bạn viết một tập lệnh thử nghiệm để tự động hóa một trang web, bạn sẽ không tiếp tục theo dõi để xem liệu nó có hoạt động bình thường hay không. Bạn sẽ để tập lệnh thực hiện công việc của nó và bạn sẽ bận rộn với một số công việc khác.

  • Ảnh chụp màn hình giúp chúng tôi hiểu quy trình của ứng dụng và kiểm tra xem nó có hoạt động phù hợp hay không.
  • Bạn cần nhập phiên bản WebDriver vào TakesScreenshot.
  • Nó hữu ích khi bạn đang biểu diễn kiểm tra duyệt chéo khi người dùng yêu cầu xem các báo cáo về việc thực thi
  • Theo dõi quá trình thực thi sẽ trở nên dễ dàng hơn nhiều nếu bạn đang làm việc trên một trình duyệt không có đầu.
  • Ảnh chụp màn hình của các bài kiểm tra không thành công cũng có thể dễ dàng được chụp lại.

Bây giờ, hãy để chúng tôi tiếp tục và tìm hiểu cách chính xác bạn có thể chụp ảnh màn hình trong khi thử nghiệm ứng dụng.



Ảnh chụp màn hình trong Selenium WebDriver: Làm thế nào để chụp Ảnh chụp màn hình trong Selenium?

Để chụp ảnh màn hình trong Selenium, chúng ta có thể sử dụng một giao diện, được gọi là TakesScreenshot. Phương pháp này tôiChỉ ra trình điều khiển, rằng nó có thể chụp ảnh màn hình và lưu trữ nó theo những cách khác nhau.

Cú pháp:



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

Ở đâu Loại đầu ra xác định loại đầu ra cho ảnh chụp màn hình.

Để chụp ảnh màn hình và lưu trữ nó ở một vị trí cụ thể, có một phương pháp gọi là “ getScreenshotAs '

Hãy hiểu điều này một cách chi tiết

Đối với mở rộng WebDriver TakesScreenshot , điều này sẽ cố gắng tốt nhất tùy thuộc vào trình duyệt để trả về những thứ sau theo thứ tự thích hợp:

  • Toàn bộ trang
  • Cửa sổ hiện tại
  • Phần có thể nhìn thấy của khung hiện tại
  • Ảnh chụp màn hình của toàn bộ màn hình chứa trình duyệt
  • Toàn bộ nội dung của phần tử HTML - Phần hiển thị của phần tử HTML

Cú pháp:

X getScreenshotAs (OutputType (X). Target) ném WebDriverException

Ở đâu

  • X là kiểu trả về của phương thức
  • Target giữ địa chỉ đích
  • Ném nếu cách triển khai cơ bản không hỗ trợ chụp ảnh màn hình.

Trường hợp kiểm tra không thành công

đã đưa ra một số chức năng mới tuyệt vời giúp kiểm tra ứng dụng dễ dàng hơn nhiều. Điều này là bởi vì cho phép tương tác bên ngoài hộp cát Javascript. Một trong những chức năng hữu ích mới là có thể chụp ảnh màn hình từ WebDriver.

Bạn có thể chụp ảnh màn hình ở bất kỳ giai đoạn nào của bài kiểm tra, nhưng chủ yếu, nó được sử dụng khi kiểm tra thất bại và chụp ảnh màn hình sẽ giúp phân tích để chúng tôi có thể biết được điều gì đã xảy ra trong quá trình thử nghiệm thất bại. Điều này có thể được thực hiện bằng cách sử dụng Chú thích TestNG.

Để làm được điều này, trước tiên, tôi cần

  • Tạo một lớp và sau đó triển khaiTestNG ‘ ITestListener ' .
  • Sau đó gọi một phương thức ‘OnTestFailure’ .
  • Thêm mã để chụp ảnh màn hình trong phương pháp này.
  • Thay vì chỉ chụp ảnh màn hình, hãy lấy tên Phương pháp thử nghiệm và chụp ảnh màn hình với tên thử nghiệm và đặt nó vào thư mục đích.

Bây giờ, câu hỏi là làm thế nào để lấy đối tượng trình điều khiển trong lớp TestListists bằng TestNG?

truyền theo giá trị so với chuyển bằng tham chiếu java

Tôi sẽ giúp bạn hiểu làm điều đó dễ dàng như thế nào.

Để chụp ảnh màn hình trong Selenium, chúng ta cần có một đối tượng trình điều khiển. Lấy trình điều khiển từ ITestContext phải được đặt trong thiết lập cơ sở, nơi có thể dễ dàng tạo phiên bản trình điều khiển của chúng tôi. Hy vọng các bạn rõ ràng với điều này. Tiếp tục, chúng ta sẽ xem qua bản demo, nơi tôi sẽ giúp bạn hiểu việc chụp ảnh màn hình trong Selenium đơn giản như thế nào.

Tôi sẽ giải thích hai chương trình khác nhau ở đây để bạn có ý tưởng thích hợp về cách chụp ảnh màn hình trong Selenium.

Chương trình đầu tiên đề cập đến cách chụp ảnh màn hình của trường hợp thử nghiệm chạy thành công. Chương trình thứ hai giúp bạn hiểu cách chụp ảnh màn hình trong quá trình kiểm tra thất bại.

Ảnh chụp màn hình trong Selenium WebDriver: Bản giới thiệu

Điều đầu tiên cần làm khi bạn muốn kiểm tra một ứng dụng web là có các tệp Selenium Jar và các thư viện Java. Bạn có thể chọn một IDE của sự lựa chọn của bạn. Tôi thích làm việc trên Eclipse IDE hơn vì nó thân thiện với người dùng.

  • Tôi sẽ đặt trình điều khiển trình duyệt thành
  • Khởi tạo phiên bản trình điều khiển bằng ChromeDriver.
  • Lấy URL của trang web.
  • Thực hiện các hành động tương ứng.

Trong trường hợp này, tôi sẽ chụp ảnh màn hình trang web chính thức của chúng tôi

Tham khảo mã bên dưới:

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) ném Exception {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') WebDriver driver () ChromeDriver driver = new driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) trình điều khiển File source = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (nguồn, Tệp mới ('./ Ảnh chụp màn hình / Màn hình .png ')) System.out.println (' Ảnh chụp màn hình được chụp ') driver.quit ()}}

Đầu ra cho mã trên được mô tả dưới đây:

ScreenOutput - Cách chụp ảnh màn hình trong Selenium - Edureka

sức mạnh của trong java

Và thư mục chứa hình ảnh

Bây giờ, hãy để chúng tôi hiểu cách chụp ảnh màn hình của bài kiểm tra không thành công

  • Đầu tiên,
  • Thêm tệp XML TestNG.
  • Thêm các phụ thuộc maven.
  • Tạo một lớp BaseClass chứa cá thể WebDriver.
  • Xác định hai hàm cụ thể là khởi tạo () và không thành công ()
  • Gọi hai hàm này trong một lớp khác, bản giới thiệu kế thừa BaseClass.
  • Lớp Demo này chứa hai phương thức setUp () gọi hàm khởi tạo (), dropsDown () giúp đóng trình điều khiển và ScreenshotTest () nơi chúng tôi xác nhận kết quả thực và đầu ra mong đợi.
  • Trong trường hợp này, tôi sẽ khẳng định cả đúng và sai dẫn đến việc trường hợp thử nghiệm không thành công.
  • Tạo một lớp khác, lớp ListeakersClass giúp WebDriver lắng nghe các sự kiện cụ thể.
  • Thêm mã này trong lớp demo @Listists (ListeakersClass.class) trước hàm chính để nghe test case.

Bạn có thể tham khảo mã này:

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.Listators public class BaseClass {public static WebDriver driver public static void initialization () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win. exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) thử {FileUtils.copyFile (srcFile, new 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.BeforeMethod import org.testng.annotations.Listists import org.testng.annotations.Test @Listists (ListeakersClass.class) public bản demo lớp mở rộng BaseClass {@BeforeMethod public void setUp () {initialization ()} @AfterMethod public void xéDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

Người nghe Lớp

package com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListeakersClass mở rộng BaseClass triển khai ITestListener {public void onTestStart (ITestResult result) {// TODO Phương thức tạo tự động gốc} public void onTestSuccess (Kết quả ITestResult) {// TODO Phương thức được tạo tự động khai thác} public void onTestFailure (ITestResult result) {System.out.println ('Failed Test') fail ()} public void onTestSkipped (ITestResult result) {// TODO Auto- phương thức được tạo gốc} public void onTestFailedButWithinSuccessPercentage (kết quả ITestResult) {// TODO Phương thức được tạo tự động gốc} public void onStart (ITestContext context) {// TODO Phương thức được tạo tự động ste} public void onFinish (ITestContext context) {// TODO Auto -generated method stan}}

Đầu ra được mô tả theo cách này:

Với điều này, chúng ta sẽ kết thúc blog “Cách chụp ảnh màn hình trong Selenium WebDriver”. Tôi hy vọng các bạn thích bài viết này và hiểu cách chạy test case. Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến vấn đề này trong phần nhận xét của 'Cách chụp ảnh màn hình trong Selenium WebDriver' và chúng tôi sẽ liên hệ lại với bạn. Nếu bạn muốn tìm hiểu thêm về Selenium WebDriver và xây dựng sự nghiệp tương tự, hãy xem đi kèm với đào tạo trực tiếp do người hướng dẫn và trải nghiệm dự án thực tế. Khóa đào tạo này sẽ giúp bạn hiểu sâu hơn về Thử nghiệm Selenium và giúp bạn thành thạo chủ đề này.