Как сделать снимок экрана в Selenium WebDriver



Эта статья о том, как сделать снимок экрана в Selenium WebDriver, поможет вам узнать, как сделать снимок экрана с помощью метода TakesScreenshot и слушателей TestNG.

Automation Testing определила новый кран современного тестирования, и он здесь, чтобы остаться. Однако, если процесс тестирования завершится неудачно, будет очень неудобно повторно протестировать весь скрипт. Здесь пригодятся снимки экрана, так как они помогают мгновенно обнаруживать сбои при тестировании. В этом блоге мы узнаем, как сделать снимок экрана в WebDriver.

Я буду обсуждать следующие темы:

Итак, приступим, ребята!





Снимок экрана в Selenium WebDriver: зачем нужен снимок экрана при тестировании автоматизации?

Скриншоты желательны для анализа ошибок. может автоматически делать снимки экрана во время выполнения. Предположим, вы пишете тестовый сценарий для автоматизации веб-страницы, вы не будете постоянно следить за тем, чтобы каждый раз проверять, правильно ли она работает. Вы позволите сценарию делать свою работу, а вы будете заняты другой работой.

  • Снимки экрана помогают нам понять, как работает приложение, и проверяют, ведет ли оно себя соответствующим образом.
  • Вам необходимо привести экземпляр WebDriver к типу TakesScreenshot.
  • Это помогает во время выступления кросс-браузерное тестирование поскольку пользователю требуется просмотреть отчеты о выполнении
  • Отслеживание выполнения станет намного проще, если вы работаете в автономном браузере.
  • Скриншоты неудачных тестов также можно легко сделать.

Теперь давайте продолжим и узнаем, как именно вы можете сделать снимок экрана во время тестирования приложения.



Снимок экрана в Selenium WebDriver: как сделать снимок экрана в Selenium?

Чтобы сделать снимок экрана в Selenium, мы можем использовать интерфейс, называемый Делает снимок экрана. Этот метод яуказывает драйверу, что он может сделать снимок экрана и сохранить его разными способами.

Синтаксис:



Файл file = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BASE64)

где OutputType определяет тип вывода для снимка экрана.

Чтобы сделать снимок экрана и сохранить его в определенном месте, существует метод под названием « getScreenshotAs '

Давайте разберемся в этом подробнее

Для расширения WebDriver Снимок экрана , в зависимости от браузера это делает все возможное, чтобы вернуть следующее в предпочтительном порядке:

  • Вся страница
  • Текущее окно
  • Видимая часть текущего кадра
  • Снимок экрана всего дисплея, содержащего браузер
  • Все содержимое элемента HTML - видимая часть элемента HTML.

Синтаксис:

разница между расширениями и инструментами в Java
X getScreenshotAs (OutputType (X). Target) выбрасывает исключение WebDriverException

где

  • X - тип возвращаемого значения метода
  • Target содержит адрес назначения
  • Броски если базовая реализация не поддерживает захват снимков экрана.

Тестовый пример не удался

придумал несколько замечательных новых функций, которые значительно упрощают тестирование приложения. Это потому, что позволяет взаимодействие за пределами песочницы Javascript. Одна из новых полезных функций - возможность делать снимки экрана из WebDriver.

программа циклического планирования в c

Вы можете делать скриншоты на любом этапе теста, но в основном они используются, когда тест терпит неудачу а снимки экрана помогают в анализе, чтобы мы могли увидеть, что пошло не так во время сбоя теста. Это можно сделать с помощью Аннотации TestNG.

Для этого сначала мне нужно

  • Создайте класс, а затем реализуйтеTestNG ‘ ITestListener ' .
  • Затем вызовите метод «OnTestFailure» .
  • Добавьте код, чтобы сделать снимок экрана в этом методе.
  • Вместо того, чтобы просто делать снимок экрана, получите имя метода тестирования, сделайте снимок экрана с именем теста и поместите его в папку назначения.

Теперь вопрос в том, как получить объект драйвера в классе TestListeners с помощью TestNG?

Я помогу вам понять, насколько легко это сделать.

Чтобы сделать снимок экрана в 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 общедоступный класс Screen {public static void main (String [] args) выдает исключение {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') драйвер WebDriver () новый драйвер ChromeDriver () driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) драйвер File source = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (source, new File ('./ Screenshots / Screen .png ')) System.out.println (' Снимок экрана сделан ') driver.quit ()}}

Выходные данные для приведенного выше кода изображены ниже:

ScreenOutput - Как сделать снимок экрана в Selenium - Edureka

И папка содержит изображение

как завершить программу на Java

Теперь давайте разберемся, как сделать снимок экрана неудачного теста.

  • Первый,
  • Добавьте XML-файл TestNG.
  • Добавьте зависимости 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.TakesScreenshot import org.openqa.selenium.WebDriver import org.openqa.selenium.chrome.ChromeDriver import org.testng.annotations.Listeners публичный класс BaseClass {публичный статический драйвер WebDriver публичная статическая инициализация void () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_Vaidchromedriver_winchro. exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {File srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) попробуйте {FileUtils.copyFile (srcFile, новый файл ('/ 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 class demo расширяет BaseClass {@BeforeMethod public void setUp () {initialization ()} @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 открытый класс ListenersClass extends BaseClass реализует ITestListener {public void onTestStart (результат ITestResult) {// TODO Автоматически сгенерированный метод stub} public void onTestSuid (Результат ITestResult) {// TODO автоматически сгенерированный заглушка метода} public void onTestFailure (результат ITestResult) {System.out.println ('Failed Test') failed ()} public void onTestSkipped (результат ITestResult) {// TODO Auto- сгенерированный заглушка метода} public void onTestFailedButWithinSuccessPercentage (ITestResult result) {// TODO Автоматически сгенерированная заглушка метода} public void onStart (ITestContext context) {// TODO Auto-generated method stub} public void onFinish (ITestContext context) {// TODO Auto -сгенерированный метод-заглушка}}

Результат изображен таким образом:

На этом мы подошли к концу блога «Как сделать снимок экрана в Selenium WebDriver». Надеюсь, вам понравилась эта статья, и вы поняли, как запустить тестовый пример. Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев «Как сделать снимок экрана в Selenium WebDriver», и мы свяжемся с вами. Если вы хотите узнать больше о Selenium WebDriver и построить в нем карьеру, посетите наш который включает в себя живое обучение под руководством инструктора и опыт реальных проектов. Этот тренинг поможет вам глубже понять тестирование на селен и достичь мастерства в этом предмете.