You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TestNG Report插件中截图无法显示,如何调整路径解决该问题?

问题根因
  • 路径引用规则错误:你在<img>标签的src属性中传入了本地磁盘绝对路径,浏览器出于安全沙箱限制,默认禁止HTML页面加载本地磁盘的绝对路径文件,就算路径完全正确也无法正常展示。
  • 路径格式不统一:生成的路径混用了Windows系统的反斜杠\和Unix标准的正斜杠/,会导致部分浏览器识别路径失败。
  • 你的截图存放在TestNG报告根目录test-output的子目录ScreenShots下,报告本身也生成在test-output目录下,完全可以用相对路径引用,不需要拼接项目根目录的绝对路径。
修复后的代码
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;
    // 新增:相对于TestNG报告根目录的相对路径
    String reportRelativePath = "./ScreenShots/" + 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='" + reportRelativePath + "' style='width:600px'/>");
}
补充排查点

如果修改后还是无法展示,按以下步骤排查:

  • 运行测试后进入项目的test-output/ScreenShots目录,确认对应文件名的截图已经成功生成
  • 打开TestNG报告后按F12打开开发者控制台,查看是否有资源加载报错,确认报错的路径和你截图实际存放的相对路径是否匹配
  • 可以将日期格式化中的空格替换为下划线,避免空格导致的路径解析异常:将ofPattern("yyyy-MM-dd HH_mm_ss")改为ofPattern("yyyy-MM-dd_HH_mm_ss")

内容的提问来源于stack exchange,提问作者Yan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:36:04