我无法将失败案例的屏幕截图添加到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();
}
}
答案 0 :(得分:1)
您需要在类级别或任何您需要的地方定义范围报告对象。然后您可以在失败时使用它。
代码:
//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
问题显然已在新快照中解决,但我必须检查