我们使用Cucumber-JVM编写验收测试脚本,使用JUnit执行它们(通过JUnit Cucumber运行器)。由于这些测试涉及Selenium WebDriver,我希望能够在我的测试失败时拍摄屏幕截图(我有代码)。
如果我只是添加一个WebDriver onException钩子,那么断言失败时就不会截取屏幕截图。我希望能够将一个JUnit执行监听器添加到Cucumber运行程序中,但API似乎不支持这一点(在Cucumber.class上没有addListener方法)。
有人可以帮忙吗?谢谢团队。
答案 0 :(得分:9)
我通常在每个黄瓜场景后调用的@After
钩子中截取屏幕截图。 @After
hook方法会使用特殊的Scenario
对象,以便您可以在报告中嵌入屏幕截图。以下是有关如何在场景失败时拍摄屏幕截图的示例
@After
public void tearDown(Scenario scenario) {
try {
if (scenario.isFailed()) {
final byte[] screenshot = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png");
}
} finally {
driver.quit();
}
}
答案 1 :(得分:0)
如果你在Selenium面前使用Geb,我想你可以使用geb.Browser.report()来截取屏幕截图。