Создать снимок экрана - Allure, JUnit5, Selenium

Есть ли по этому поводу документация? В JUnit4 есть @Rule, и решение простое. Для JUnit5 я сделал расширение public class TestWatcher implements AfterTestExecutionCallback, но я не знаю, что добавить в метод @Override.

Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
1
0
1 670
2

Ответы 2

Вы можете найти образец здесь. Это код из NoraUi Open Source Framework (Java + Selenium).

import org.openqa.selenium.TakesScreenshot;

final byte[] screenshot = ((TakesScreenshot) Context.getDriver()).getScreenshotAs(OutputType.BYTES); 

Мне удалось это решить. Метод захвата экрана по умолчанию:

@Attachment(value = "{testName} - screenshot", type = "image/png")
private byte[] makeScreenshotOnFailure(String testName) {

    return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}

и TestWatcher (расширение):

@Override
public void afterTestExecution(ExtensionContext extensionContext) throws Exception {

    Object test = extensionContext.getRequiredTestInstance();
    Field a = test.getClass().getDeclaredField("driver");
    a.setAccessible(true);
    driver = (WebDriver) a.get(test);

    Method method = extensionContext.getRequiredTestMethod();
    if (extensionContext.getExecutionException().isPresent()) {
        makeScreenshotOnFailure(method.getName());
    }
}

Другие вопросы по теме