我发现在使用Java + Cucumber时,看起来是一种广泛使用的方法来捕获失败时的屏幕截图,这很简单:
@After
public void embedScreenshot(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
try {
byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
String testName = scenario.getName();
scenario.embed(screenshot, "image/png");
scenario.write(testName);
} catch (WebDriverException wde) {
System.err.println(wde.getMessage());
} catch (ClassCastException cce) {
cce.printStackTrace();}
}
}
}
如何将图像文件写入桌面上的文件夹(例如,默认情况下而不是项目目录),并为其指定一个自定义名称,例如我的Cucumber测试场景的名称?
答案 0 :(得分:2)
您可以像Scenario scenario
这样获取方案名称:
scenario.getName()
然后您可以创建两个File
个对象,一个用于截屏,另一个用于目标,并使用org.apache.commons.io.FileUtils
将屏幕截图文件复制到目标文件夹:
FileUtils.copyFile(file, destFile);
答案 1 :(得分:0)
@gppanter embed方法只接受字节作为args。那你是怎么改变它的。我试图为我的代码获取屏幕截图
@After
public void embedScreenshotOnFail(Scenario s) {
if (s.isFailed()) try {
File screenshot =
((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
s.embed(screenshot , "image/png");
} catch (ClassCastException cce) {
cce.printStackTrace();
}
}