屏幕截图未显示在 testNg 报告插件中

ScreenShot Not showing in testNg Report plugin

我有一个问题,我截取的屏幕截图没有显示在 TestNg 报告插件中,我很确定问题出在我给他们的路径上,但我不知道我还能提供什么其他路径是否有解决方案?

我的截图代码:

public void ScreenShot() {
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH_mm_ss");
    LocalDateTime now = LocalDateTime.now();
    String destDir = System.getProperty("user.dir") + "/" + "test-output/ScreenShots";
    String FileName = "SoftAssertScreenshot_" + dtf.format(now) + ".png";
    String DestFile = destDir + "/" + FileName;
    Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
    BufferedImage image = screenshot.getImage(); 
    try {
        ImageIO.write(image, "PNG", new File(DestFile));
        System.out.println("test");
    } catch (IOException e) {
        e.printStackTrace();
    }
    Reporter.log("</br><font color='#73a9d0'>***************Screen Of the error****************</font>");
    Reporter.log("</br><img id='ErrorResult' src='" + DestFile + "' style='width:600px'/>");
}

测试报告中显示的内容: [![测试结果图片][1]][1]

Html 在 testng 中:

<img id="ErrorResult" src="C:\Users\user\eclipse-workspacezr-aut\Demo_Automatisation/test-output/ScreenShots/SoftAssertScreenshot_2021-11-24 08_50_12.png" style="width:600px">

感谢您的帮助! [1]: https://i.stack.imgur.com/5zp1Y.png

我尝试了相同的代码,但看到了附件。

代码:

String DestFile = System.getProperty("user.dir") + "/Data/SO.png";
Reporter.log("</br><font color='#73a9d0'>***************Screen Of the error****************</font>");
Reporter.log("</br><img id='ErrorResult' src='" + DestFile + "' style='width:600px'/>");

输出:

HTML:

<img id="ErrorResult" src="C:\Users\Nandan\EclipseWorkspace\Selenium3_SO/Data/SO.png" style="width:600px">

您的 Reporter.log 代码没有任何问题。请尝试以下操作,

  • 检查图片是否真的存在于位置C:\Users\user\eclipse-workspacezr-aut\Demo_Automatisation/test-output/ScreenShots/SoftAssertScreenshot_2021-11-24 08_50_12.png

  • 在行 ImageIO.write(image, "PNG", new File(DestFile)); 之后放置一个调试点以确认图像已成功写入给定位置。

  • screenshot.getImage(); getImage() 方法的目的是什么?它会返回 RenderedImage 吗?如果是,你在哪里传递文件位置?我正在做下面的事情并且它正在工作。您是否遵循相同的方法?

String DestFile = System.getProperty("user.dir") + "/Data/"+imageName+".png";
Image image = ImageIO.read(new File(DestFile));
BufferedImage buffered = (BufferedImage) image;
ImageIO.write(buffered, "PNG", new File(DestFile));

应该能帮到你。您需要找出 Jenkins 工作区中屏幕截图文件夹的确切位置并更新 String destDir