屏幕截图未附加到报告
Screenshots not attaching to Report
我正在尝试将屏幕截图附加到生成的报告中。
据我所知,我正在添加文件路径,因此它应该是附加的。
这是捕获屏幕截图并生成文件的代码
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”+ 文件名。硬编码完整路径几乎不会奏效。“
我正在尝试将屏幕截图附加到生成的报告中。
据我所知,我正在添加文件路径,因此它应该是附加的。
这是捕获屏幕截图并生成文件的代码
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”+ 文件名。硬编码完整路径几乎不会奏效。“