gpt4 book ai didi

java - 在使用 Cucumber 和 JUnit 时,如何截取屏幕截图并将其附加到 Allure 报告中?

转载 作者:行者123 更新时间:2023-11-30 02:35:03 24 4
gpt4 key购买 nike

我在我的自动化测试项目中使用 Cucumber、Selenium、Java、Maven 和 JUnit 堆栈。

目标是对失败和损坏的测试进行屏幕截图。我已经找到了 Java/Maven/JUnit 堆栈的解决方案:

@Rule
public TestWatcher screenshotOnFailure = new TestWatcher() {
@Override
protected void failed(Throwable e, Description description) {
makeScreenshotOnFailure();
}

@Attachment("Screenshot on failure")
public byte[] makeScreenshotOnFailure() {
return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
};

但是,当然它在使用 Cucumber 的情况下不起作用,因为它不使用任何 @Test 方法。

所以,我决定将 @Rule 更改为 @ClassRule,以使其监听任何失败,所以这里是:

@ClassRule
public static TestWatcher screenshotOnFailure = new TestWatcher() {
@Override
protected void failed(Throwable e, Description description) {
makeScreenshotOnFailure();
}

@Attachment("Screenshot on failure")
public byte[] makeScreenshotOnFailure() {
logger.debug("Taking screenshot");
return ((TakesScreenshot) Application.getInstance().getWebDriver()).getScreenshotAs(OutputType.BYTES);
}
};

这个解决方案对我没有帮助。

所以,问题是:“当我在测试项目中使用 Java/Selenium/Cucumber/JUnit/Maven 时,如何在失败时附加屏幕截图?”

最佳答案

解决方案只需将以下代码添加到您的定义类中:

@After
public void embedScreenshot(Scenario scenario) {
if (scenario.isFailed()) {
try {
byte[] screenshot = ((TakesScreenshot) Application.getInstance().getWebDriver())
.getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png");
} catch (Exception e) {
e.printStackTrace();
}
}
}

关于java - 在使用 Cucumber 和 JUnit 时,如何截取屏幕截图并将其附加到 Allure 报告中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43315248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com