Java + Cucumber 失败时的屏幕截图
Screenshot on failure with Java + Cucumber
我发现了一种在使用 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 测试场景的名称?
您可以像这样从 Scenario scenario
中获取场景名称:
scenario.getName()
然后您可以创建两个 File
对象,一个用于屏幕截图,一个用于目标,然后使用 org.apache.commons.io.FileUtils
将屏幕截图文件复制到目标文件夹:
FileUtils.copyFile(file, destFile);
@gppanter 嵌入方法将只接受字节,因为 args.Then 你是如何改变它的。我正在尝试获取我的代码的屏幕截图
@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();
}
}
我发现了一种在使用 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 测试场景的名称?
您可以像这样从 Scenario scenario
中获取场景名称:
scenario.getName()
然后您可以创建两个 File
对象,一个用于屏幕截图,一个用于目标,然后使用 org.apache.commons.io.FileUtils
将屏幕截图文件复制到目标文件夹:
FileUtils.copyFile(file, destFile);
@gppanter 嵌入方法将只接受字节,因为 args.Then 你是如何改变它的。我正在尝试获取我的代码的屏幕截图
@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();
}
}