使用Java + Cucumber失败的屏幕截图

时间:2016-08-08 22:05:05

标签: java cucumber screenshot

我发现在使用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测试场景的名称?

2 个答案:

答案 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();
    }
}