Jenkins中RobotFramework log.html无法显示截图问题咨询
Jenkins中log.html无法显示截图但本地正常的原因及解决办法
核心原因
- 路径引用不兼容:本地打开log.html时,截图用的是本地文件系统路径(比如
file:///xxx/screenshot.png),但Jenkins网页访问时,浏览器无法直接读取服务器本地文件,这种路径在网页环境下无效。 - Jenkins安全策略限制:默认的Content-Security-Policy(CSP)规则会阻止加载
file://协议的资源,或者限制非Jenkins托管的静态资源访问。 - 测试报告生成配置错误:你用的测试报告工具(如Allure、ExtentReport)生成报告时,没有将截图路径转换为Jenkins可通过HTTP访问的相对路径,依然保留本地路径格式。
对应的解决办法
- 配置HTML报告发布插件:
在Jenkins任务中安装并配置「Publish HTML reports」插件,将报告目录设置为你生成log.html的路径,勾选「Allow directory listing」和「Use project name as prefix」。同时在测试代码中,将截图保存到Jenkins工作区的子目录(比如${WORKSPACE}/screenshots),报告中引用截图时使用相对路径(如./screenshots/xxx.png),让Jenkins将这些文件作为静态资源提供访问。 - 调整Jenkins的CSP规则(测试环境适用):
进入Jenkins「管理 Jenkins」→「脚本控制台」,执行以下Groovy命令临时修改CSP:
注意:该操作会降低Jenkins的安全性,生产环境需谨慎使用,建议优先通过路径配置解决问题。System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:;") - 修正测试报告工具的路径配置:
以ExtentReport为例,在生成报告时设置资源路径为工作区内的截图目录:
确保报告中生成的截图引用路径是相对于log.html的相对路径,而非本地绝对路径。ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("log.html"); htmlReporter.config().setResourcePath("./screenshots/");
内容的提问来源于stack exchange,提问作者Skybright
相关产品推荐
相关产品推荐

