无法将屏幕快照添加到Cucumber中的范围报告中

时间:2018-12-11 06:55:04

标签: java selenium-webdriver cucumber-junit extentreports

  

我无法将失败案例的屏幕截图添加到Cucumber(java)的范围报告中。

//Runner class to generate extent report
@AfterClass
public static void Report() {

    Reporter.loadXMLConfig(new File("/Users/chetan/Documents/workspace/Packages/extent-config.xml"));
    Properties p = new Properties();
    p.list(System.out);

}

//Main class contains step definitions
@After("@browser")
public void teardown(WebDriver driver, Scenario scenario, String screenshotName) throws IOException {
    if (scenario.isFailed()) {
        final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
        scenario.embed(screenshot, "image/png");

        driver.quit();
    }
}

3 个答案:

答案 0 :(得分:1)

您需要在类级别或任何您需要的地方定义范围报告对象。然后您可以在失败时使用它。

  • 对于报告位置:在项目目录的根位置
  • 中创建名称为Report 的新文件夹
  • 对于屏幕快照位置:在项目目录的根位置
  • 创建名称为Screenshots 的新文件夹

代码:

//Report Initialization
ExtentHtmlReporter htmlreport = new ExtentHtmlReporter(".\\Report\\Extent Report with Screenshot.html");
ExtentReports reports = new ExtentReports();
reports.attachReporter(htmlreport);
ExtentTest testlog;

//Capture and save screenshot
File screen = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
BufferedImage img = ImageIO.read(screen);
File filetest = Paths.get(".").toAbsolutePath().normalize().toFile();
ImageIO.write(img, "png", new File(filetest + "\\Screenshots\\" + "Test.png"));

//Log Screenshot in Report
testlog.info("Details of " + "Test screenshot", MediaEntityBuilder
                .createScreenCaptureFromPath(System.getProperty("user.dir") + "\\Screenshots\\" + "Test.png").build());

//Flush Report-Mandatory, Else report will not generate.  
reports.flush();

为便于使用,您可以从Github(Click here)引用我的示例。

答案 1 :(得分:0)

您没有将屏幕截图添加到报告中

ExtentTest test = extent.createTest("TestName");
test.fail("details").addScreenCaptureFromPath("pathToScreenshot");
// or
test.fail("details", MediaEntityBuilder.createScreenCaptureFromPath("pathToScreenshot").build());

答案 2 :(得分:0)

这是范围报告黄瓜适配器的问题,但答案是范围报告的问题。 请打开报告,然后在控制台中查看屏幕快照路径的链接,并检查其中是否有图像。

一个已知的问题是,扩展适配器由于某种原因将屏幕快照保存在test-output文件夹中,您可能需要将屏幕快照文件夹放入extent.properties或使用SystemSet

问题显然已在新快照中解决,但我必须检查