【问题标题】:Screenshots not attaching to Report未附加到报告的屏幕截图
【发布时间】:2019-03-28 12:30:27
【问题描述】:

我正在尝试将屏幕截图附加到生成的报告中。

据我所知,我正在添加文件路径,因此它应该是附加的。

这是捕获屏幕截图并生成文件的代码

    private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm");

    public static String captureScreen(WebDriver driver, String screenName) throws IOException {

        TakesScreenshot screen = (TakesScreenshot) driver;
        File src = screen.getScreenshotAs(OutputType.FILE);


        String path = "X:\\ExtentReports";
        String javaPath = path.replace("\\", "/");

        File target = Paths.get(javaPath,
                screenName + ".png").toFile();
        FileUtils.copyFile(src, target);

        return javaPath;
    }

    public static String generateFileName(ITestResult results) {
        Date date = new Date();
        String fileName = results.getName() + "_" + dateFormat.format(date);
        return fileName;
//        return results.getName() + "_" + dateFormat.format(date);
    }
}

这是生成报告的地方,并且应该将屏幕截图添加到测试中。通过使用:

.addScreenCaptureFromPath(screenShot));

    public synchronized void afterMethod(ITestResult result) throws IOException {

        String screenShot = CaptureScreenShot.captureScreen(MetricellTest.driver, CaptureScreenShot.generateFileName(result));

        if (result.getStatus() == ITestResult.FAILURE) {
            test.get().log(Status.FAIL, result.getName());
            test.get().log(Status.FAIL, result.getThrowable());
            test.get().fail("Screen Shot : " + test.get().addScreenCaptureFromPath(screenShot));
        } else if (result.getStatus() == ITestResult.SUCCESS) {
            test.get().log(Status.PASS, result.getName());
            test.get().pass("Screen Shot : " + test.get().addScreenCaptureFromPath(screenShot));
        } else if (result.getStatus() == ITestResult.SKIP) {
            test.get().skip("Test Case : " + result.getName() + " has been skipped");

            extent.flush();
            MetricellTest.driver.close();

        }
    }

    @AfterTest
    public void endTest() {
        extent.flush();

    }

在测试结束时我希望能够打开报告并看到报告内的屏幕截图。

【问题讨论】:

  • 截图文件的预期路径总是相对于报告文件本身。如果您想将屏幕截图存储在与报告文件相同的文件夹中,请不要指定路径,只指定文件名,否则,如果您在报告位置有一个 \screenshots 文件夹,则在您的文件名前加上“screenshots\”+文件名。对完整路径进行硬编码几乎是行不通的。
  • 你能告诉我你的意思吗?我看到的每个示例都指定了屏幕截图的文件路径。
  • 感谢您的建议。屏幕截图现在出现在报告中。

标签: java extentreports


【解决方案1】:

比尔的评论足以解决这个问题:

"屏幕截图文件的预期路径总是相对于报告文件本身。如果您想将屏幕截图存储在与报告文件相同的文件夹中,请不指定路径,只指定文件名,否则,如果您有,比如说,报告位置之外的 \screenshots 文件夹,然后在您的文件名前加上“screenshots”+ 文件名。硬编码完整路径几乎永远不会起作用。”

【讨论】:

    猜你喜欢
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    相关资源
    最近更新 更多