Java + Cucumber 失败的屏幕截图

gpp*_*ter 5 java screenshot 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();}
        }
    }
}  
Run Code Online (Sandbox Code Playgroud)

例如,如何将图像文件写入桌面上的文件夹(而不是默认的项目目录),并为其指定一个自定义名称,例如我的 Cucumber 测试场景的名称?

Eug*_*e S 4

您可以通过以下方式获取场景名称Scenario scenario

scenario.getName()
Run Code Online (Sandbox Code Playgroud)

然后,您可以创建两个File对象,一个用于屏幕截图,另一个用于目标文件夹,然后使用org.apache.commons.io.FileUtils将屏幕截图文件复制到目标文件夹:

FileUtils.copyFile(file, destFile);
Run Code Online (Sandbox Code Playgroud)