Jenkins(Jetty)中Extent Report截图404无法显示问题求助
解决方案:Extent Report截图在Jenkins端404的排查与修复
1. 检查HTML Publisher插件配置
- 确保HTML Publisher的HTML directory to archive设置为包含报告和截图的相对路径(如
target/extent-reports),同时勾选Allow script access选项,避免脚本和资源加载被限制。 - 不要使用绝对路径,Jenkins会基于工作区自动解析相对路径。
2. 修复工作区文件权限
- 登录CentOS机器,检查截图文件的权限:
ls -l /var/lib/jenkins/workspace/你的项目名/截图文件名.png - 确保Jenkins运行用户(默认
jenkins)对截图和报告目录有读权限,权限不足时执行:chown -R jenkins:jenkins /var/lib/jenkins/workspace/你的项目名/ chmod -R 755 /var/lib/jenkins/workspace/你的项目名/extent-reports/
3. 修正截图引用路径
- 打开生成的HTML报告,检查截图的
src属性是否为相对路径(如./screenshot.png),而非本地绝对路径。 - 若代码中用了绝对路径,修改Selenium生成截图的逻辑,改用基于报告输出目录的相对路径:
String screenshotPath = "./screenshot_" + System.currentTimeMillis() + ".png"; File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); Files.copy(screenshotFile.toPath(), Paths.get(screenshotPath)); extentTest.addScreenCaptureFromPath(screenshotPath);
4. 调整Jetty资源访问配置
- 编辑Jenkins启动脚本(如
/etc/init.d/jenkins或jenkins.service),在JVM参数中添加:JAVA_OPTS="-Dhudson.model.DirectoryBrowserSupport.CSP= -Djetty.servlet.Default.dirAllowed=true" - 重启Jenkins服务:
systemctl restart jenkins - 该配置允许Jetty直接访问工作区静态资源,避免路径拦截。
5. 分析Jetty日志定位问题
- 查看Jenkins日志(默认路径
/var/log/jenkins/jenkins.log),搜索404请求记录:grep "404" /var/log/jenkins/jenkins.log - 根据日志里的请求路径,确认Jenkins是否在错误的目录下查找截图,比如路径层级是否匹配。
内容的提问来源于stack exchange,提问作者ddgnWGU
相关产品推荐
相关产品推荐

