Selenium WebDriver에서 스크린 샷을 찍는 방법



Selenium WebDriver에서 스크린 샷을 찍는 방법에 대한이 문서는 TakesScreenshot 메서드 및 TestNG 리스너를 사용하여 스크린 샷을 캡처하는 방법을 배우는 데 도움이됩니다.

자동화 테스트는 현대 테스트의 새로운 수도꼭지를 정의했으며 여기에 있습니다. 그러나 테스트 프로세스가 실패하면 전체 스크립트를 다시 테스트하는 것이 매우 불편할 것입니다. 스크린 샷은 테스트 실패를 즉시 감지하는 데 도움이되므로 편리합니다. 이 블로그의 매체를 통해 우리는 스크린 샷을 찍는 방법을 배울 것입니다. WebDriver.

다음 주제에 대해 논의 할 것입니다.

자, 시작합시다!





Selenium WebDriver의 스크린 샷 : 자동화 테스트에 스크린 샷이 필요한 이유는 무엇입니까?

버그 분석에는 스크린 샷이 바람직합니다. 실행 중에 자동으로 스크린 샷을 찍을 수 있습니다. 웹 페이지를 자동화하는 테스트 스크립트를 작성한다고 가정 해 보겠습니다. 웹 페이지가 매번 제대로 작동하는지 확인하기 위해 계속 모니터링하지는 않습니다. 당신은 대본이 그 일을하게하고 다른 일에 몰두하게 될 것입니다.

  • 스크린 샷은 응용 프로그램의 흐름을 이해하는 데 도움이되며 그에 따라 작동하는지 확인합니다.
  • WebDriver 인스턴스를 TakesScreenshot으로 타입 캐스트해야합니다.
  • 공연하는 동안 도움이됩니다. 크로스 브라우징 테스트 사용자가 실행 보고서를 봐야하기 때문에
  • 헤드리스 브라우저에서 작업하는 경우 실행 추적이 훨씬 쉬워집니다.
  • 실패한 테스트의 스크린 샷도 쉽게 캡처 할 수 있습니다.

이제 애플리케이션을 테스트하는 동안 정확히 스크린 샷을 찍을 수있는 방법을 알아 보겠습니다.



Selenium WebDriver의 스크린 샷 : Selenium에서 스크린 샷을 캡처하는 방법은 무엇입니까?

Selenium에서 스크린 샷을 캡처하기 위해 다음과 같은 인터페이스를 사용할 수 있습니다. TakesScreenshot. 이 방법은드라이버가 스크린 샷을 캡처하고 다른 방식으로 저장할 수 있음을 나타냅니다.

PHP 배열 인쇄 방법

통사론:



파일 파일 = ((TakesScreenshot) 드라이버) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesScreenshot) 드라이버) .getScreenshotAs (OutputType.BASE64)

어디 OutputType 스크린 샷의 출력 유형을 정의합니다.

스크린 샷을 캡처하여 특정 위치에 저장하기 위해“ getScreenshotAs '

이것을 자세히 이해합시다

WebDriver 확장 용 TakesScreenshot 이 방법은 브라우저에 따라 다음을 선호하는 순서로 반환하도록 최선을 다합니다.

  • 전체 페이지
  • 현재 창
  • 현재 프레임의 보이는 부분
  • 브라우저가 포함 된 전체 디스플레이의 스크린 샷
  • HTML 요소의 전체 내용 – HTML 요소의 보이는 부분

통사론:

X getScreenshotAs (OutputType (X). target)에서 WebDriverException 발생

어디

  • X는 메서드의 반환 유형입니다.
  • 대상은 대상 주소를 보유합니다.
  • 던짐 기본 구현이 스크린 샷 캡처를 지원하지 않는 경우

테스트 케이스 실패

응용 프로그램을 훨씬 쉽게 테스트 할 수있는 몇 가지 새로운 기능을 제공합니다. 이것은 자바 스크립트 샌드 박스 외부의 상호 작용을 허용합니다. 새로운 유용한 기능 중 하나는 WebDriver에서 스크린 샷을 찍을 수 있다는 것입니다.

셀레늄에서 팝업을 처리하는 방법

테스트의 어느 단계에서나 스크린 샷을 찍을 수 있지만 대부분은 테스트를 할 때 사용됩니다. 실패 스크린 샷을 찍으면 분석에 도움이되므로 테스트 실패 중에 무엇이 잘못되었는지 확인할 수 있습니다. 이것은 다음을 사용하여 수행 할 수 있습니다. TestNG 주석.

이렇게하려면 먼저

  • 클래스를 만든 다음 구현TestNG‘ ITestListener ' .
  • 그런 다음 메서드를 호출합니다. ‘onTestFailure’ .
  • 이 방법으로 스크린 샷을 찍는 코드를 추가합니다.
  • 스크린 샷을 찍는 대신 테스트 메서드 이름을 가져 와서 테스트 이름이있는 스크린 샷을 찍어 대상 폴더에 넣습니다.

이제 질문은 TestNG를 사용하여 TestListeners 클래스에서 드라이버 객체를 얻는 방법입니다.

그렇게하는 것이 얼마나 쉬운 지 이해하도록 도와 드리겠습니다.

Selenium에서 스크린 샷을 찍으려면 드라이버 객체가 필요합니다. 드라이버 인스턴스를 생성하기 쉬운 기본 설정에서 설정해야하는 ITestContext에서 드라이버를 가져옵니다. 여러분이 이것에 대해 명확하길 바랍니다. 계속해서 Selenium에서 스크린 샷을 찍는 것이 얼마나 간단한 지 이해하는 데 도움이되는 데모를 살펴 보겠습니다.

여기서는 Selenium에서 스크린 샷을 찍는 방법에 대한 적절한 아이디어를 얻을 수 있도록 두 가지 다른 프로그램을 설명하겠습니다.

첫 번째 프로그램은 성공적으로 실행 된 테스트 케이스의 스크린 샷을 캡처하는 방법을 다룹니다. 두 번째 프로그램은 테스트 실패 중에 스크린 샷을 찍는 방법을 이해하는 데 도움이됩니다.

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.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.get ( 'http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) 드라이버 파일 소스 = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (source, new File ( './ Screenshots / Screen .png ')) System.out.println ('스크린 샷이 촬영되었습니다 ') driver.quit ()}}

위 코드의 출력은 다음과 같습니다.

ScreenOutput-Selenium에서 스크린 샷을 찍는 방법-Edureka

그리고 폴더에는 이미지가 포함되어 있습니다.

석사는 대학원 학위입니다

이제 테스트 실패의 스크린 샷을 찍는 방법을 이해하겠습니다.

  • 먼저,
  • TestNG XML 파일을 추가하십시오.
  • Maven 종속성을 추가하십시오.
  • WebDriver 인스턴스를 보유하는 BaseClass 클래스를 만듭니다.
  • 두 함수, 즉 initialize () 및 failed () 정의
  • 다른 클래스에서이 두 함수를 호출합니다. 데모 BaseClass를 상속합니다.
  • 이 데모 클래스는 initialize () 함수를 호출하는 setUp () 두 가지 메소드를 보유하고 있습니다. tearDown ()은 드라이버를 닫는 데 도움이되고 ScreenshotTest ()는 실제 출력과 예상 출력을 주장합니다.
  • 이 경우 테스트 케이스가 실패하는 결과를 초래하는 참과 거짓을 모두 주장합니다.
  • WebDriver가 특정 이벤트를 수신하는 데 도움이되는 다른 클래스 ListenersClass를 만듭니다.
  • 테스트 케이스를 청취하기 위해 메인 함수 앞에 데모 클래스 @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.TakesScreenshot 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 initialize () {System.setProperty ( 'webdriver.chrome.driver', 'C : UsersNeha_VaidyaDesktopchromedriver_win32chromedriver. exe ') driver = new ChromeDriver () driver.get ('http://www.edureka.co/ ')} public void failed () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) try {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.Listeners import org.testng.annotations.Test @Listeners (ListenersClass.class) public 클래스 데모 확장 BaseClass {@BeforeMethod public void setUp () {initialize ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

ListenersClass

package com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass extends BaseClass implementations ITestListener {public void onTestStart (ITestResult result) {// TODO Auto-generated method stub} public void onTestSuccess (ITestResult 결과) {// TODO 자동 생성 메소드 스텁} public void onTestFailure (ITestResult result) {System.out.println ( 'Failed Test') failed ()} public void onTestSkipped (ITestResult result) {// TODO Auto- 생성 된 메소드 스텁} public void onTestFailedButWithinSuccessPercentage (ITestResult result) {// TODO 자동 생성 된 메소드 스텁} public void onStart (ITestContext context) {// TODO 자동 생성 된 메소드 스텁} public void onFinish (ITestContext context) {// TODO Auto 생성 된 메소드 스텁}}

출력은 다음과 같이 표시됩니다.

이것으로 'Selenium WebDriver에서 스크린 샷을 찍는 방법'블로그는 끝납니다. 이 기사를 즐겁게 읽고 테스트 케이스를 실행하는 방법을 이해 하셨기를 바랍니다. 질문이 있으십니까? 'Selenium WebDriver에서 스크린 샷을 찍는 방법'의 댓글 섹션에 언급 해 주시면 다시 연락 드리겠습니다. Selenium WebDriver에 대해 자세히 알아보고 동일한 경력을 쌓으려면 다음을 확인하십시오. 강사 주도의 라이브 교육 및 실제 프로젝트 경험과 함께 제공됩니다. 이 교육은 Selenium 테스트를 심도있게 이해하고 주제에 대한 숙달을 달성하는 데 도움이됩니다.