仅在 Jenkins 中 运行 时,屏幕截图未附加到扩展报告
Screenshot is not attached to the extend report when ran in Jenkins only
当使用 BrowserStack 的 remote-webdriver 实例时,只有在 Jenkins 中 运行 时,失败的屏幕截图不会附加到报告中。请帮忙。文件夹结构为 ExtentReport\Screenshots
我试过了Extent Report: Not able to see the screenshots on other machine
但这并不能解决问题。
public void onTestFailure(ITestResult result) {
testMap.get().fail(result.getThrowable());
//add screenshot for failed test.
WebDriver driver= WebDriverFactory.getDriver();
//experimental to get screenshot
driver = new Augmenter().augment(driver);
String dateName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
String destination = System.getProperty("user.dir") + "/ExtentReport/" + "/Screenshots/" + result.getMethod().getMethodName() + dateName + ".png";
File finalDestination = new File(destination);
try {
FileUtils.copyFile(source, finalDestination);
} catch (IOException e) {
e.printStackTrace();
}
testMap.get().addScreenCaptureFromPath(destination,result.getMethod().getMethodName());
}
不同的操作系统使用不同的字符作为文件和路径分隔符。当我们的应用程序必须 运行 在多个平台上时,我们需要正确处理这些。
要处理此问题 Java 提供 File.separator
.
所以,而不是
String destination = System.getProperty("user.dir") + "/ExtentReport/" + "/Screenshots/" + result.getMethod().getMethodName() + dateName + ".png";
试试这个:
String destination = System.getProperty("user.dir") + File.separator + "ExtentReport" + File.separator +"Screenshots" + File.separator + result.getMethod().getMethodName() + dateName + ".png";
要使用它,您必须添加此导入
import java.io.File;
根据拉维信条的回答,
HTML : Unable to view the base64 image in html report
String base64Screenshot ="data:image/png;base64," + ((TakesScreenshot) Objects.requireNonNull(driver)).getScreenshotAs(OutputType.BASE64);
testMap.get().addScreenCaptureFromBase64String(base64Screenshot).getModel().getMedia().get(0);
当使用 BrowserStack 的 remote-webdriver 实例时,只有在 Jenkins 中 运行 时,失败的屏幕截图不会附加到报告中。请帮忙。文件夹结构为 ExtentReport\Screenshots
我试过了Extent Report: Not able to see the screenshots on other machine 但这并不能解决问题。
public void onTestFailure(ITestResult result) {
testMap.get().fail(result.getThrowable());
//add screenshot for failed test.
WebDriver driver= WebDriverFactory.getDriver();
//experimental to get screenshot
driver = new Augmenter().augment(driver);
String dateName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
String destination = System.getProperty("user.dir") + "/ExtentReport/" + "/Screenshots/" + result.getMethod().getMethodName() + dateName + ".png";
File finalDestination = new File(destination);
try {
FileUtils.copyFile(source, finalDestination);
} catch (IOException e) {
e.printStackTrace();
}
testMap.get().addScreenCaptureFromPath(destination,result.getMethod().getMethodName());
}
不同的操作系统使用不同的字符作为文件和路径分隔符。当我们的应用程序必须 运行 在多个平台上时,我们需要正确处理这些。
要处理此问题 Java 提供 File.separator
.
所以,而不是
String destination = System.getProperty("user.dir") + "/ExtentReport/" + "/Screenshots/" + result.getMethod().getMethodName() + dateName + ".png";
试试这个:
String destination = System.getProperty("user.dir") + File.separator + "ExtentReport" + File.separator +"Screenshots" + File.separator + result.getMethod().getMethodName() + dateName + ".png";
要使用它,您必须添加此导入
import java.io.File;
根据拉维信条的回答,
HTML : Unable to view the base64 image in html report
String base64Screenshot ="data:image/png;base64," + ((TakesScreenshot) Objects.requireNonNull(driver)).getScreenshotAs(OutputType.BASE64);
testMap.get().addScreenCaptureFromBase64String(base64Screenshot).getModel().getMedia().get(0);