Jenkins中Robot Framework Browser Library截图未嵌套至日志问题求助
Robot Framework日志截图未嵌入显示问题排查与解决
环境版本
- Jenkins 2.386
- Pipeline plugin 590.v6a_d052e5a_a_b_5
- Robot Framework plugin 3.3.0
- Python 3.9.2
- robotframework 6.0.2
- robotframework-assertion-engine 1.0.0
- robotframework-browser 15.1.0
- robotframework-pythonlibcore 4.0.0
问题现象
- Robot测试日志中的截图未嵌入显示,仅显示占位图标,但点击图标可正常跳转打开对应截图
- Robot Publisher已成功将测试结果复制至当前构建目录
- 已配置
otherFiles: '**/*.png',PNG图片及Browser Library的目录结构已被正确复制 - 测试在Jenkins主节点执行,未使用代理节点
已尝试操作
已配置CSP规则,内容如下,但问题未解决:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","sandbox allow-scripts; default-src 'none'; img-src 'self' data: ; style-src 'self' 'unsafe-inline' data: ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ;")
当前使用的Jenkinsfile:
pipeline { agent any stages { stage('Test') { steps { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh 'robot -d results Scripts/My_Test_Suite.robot' } } } stage('Results') { steps { step([ $class: 'RobotPublisher', outputPath: 'results', outputFileName: '*.xml', otherFiles: '**/*.png', ]) } } } }
解决办法
1. 调整CSP配置
当前CSP的default-src设为'none'可能限制了资源的基础访问权限,修改为'self'后可确保Jenkins能正确加载相对路径的图片。更新后的CSP配置:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","sandbox allow-scripts; default-src 'self'; img-src 'self' data: ; style-src 'self' 'unsafe-inline' ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ;")
修改完成后重启Jenkins生效。
2. 优化Robot Publisher的文件匹配规则
将otherFiles配置为更明确的路径,避免匹配范围模糊导致插件无法准确识别图片:
step([ $class: 'RobotPublisher', outputPath: 'results', outputFileName: '*.xml', otherFiles: 'results/**/*.png', ])
3. 升级Robot Framework插件
当前使用的3.3.0版本可能存在图片嵌入显示的兼容性问题,尝试升级至最新版本,新版本通常会修复此类已知问题。
4. 检查Robot原始日志的图片路径
打开构建目录下results文件夹中的log.html,查看图片的src属性是否为有效相对路径。如果路径异常,可在Robot执行命令中指定更清晰的输出路径,例如:
robot -d ./results ./Scripts/My_Test_Suite.robot
内容的提问来源于stack exchange,提问作者Jalo
相关产品推荐
相关产品推荐

