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

Output文件夹移出RobotFramework仓库后log.html无法显示图片

RobotFramework测试报告迁移后图片无法显示的解决方案

问题背景

用RobotFramework做嵌入式软件系统测试自动化,测试完成后log.html、output.xml、report.html和测试生成的图片都存在仓库内的Output文件夹。留在原位置时报告能正常显示图片,但迁移Output文件夹后,log.html会去原仓库的绝对路径找图片,导致图片加载失败。

问题核心:图片绘制代码中fig_path使用的是Output文件夹的绝对路径,且_log_plot方法直接把这个绝对路径记录到了测试日志里,迁移后路径失效。

解决方案

1. 修改代码,记录图片相对路径

让日志里记录的图片路径是相对于Output文件夹的文件名(因为图片和报告在同一目录),而非绝对路径。

修改plot_data函数的结尾部分,替换原有的self._log_plot(fig_path)逻辑:

plt.savefig(fig_path)
# 提取图片文件名,替换绝对路径为文件名
img_filename = os.path.basename(fig_path)
# 调用RobotFramework的日志API插入图片,使用相对路径(文件名)
from robot.libraries.BuiltIn import BuiltIn
BuiltIn().log_html(f'<img src="{img_filename}" alt="Data Verification Plot">')
plt.close()

如果你的_log_plot是自定义方法,直接修改该方法,让它记录图片文件名而非绝对路径即可。

2. 修复已生成的output.xml

如果已经有带绝对路径的output.xml,可以用脚本批量替换其中的绝对路径为文件名,再重新生成报告:

import xml.etree.ElementTree as ET
import os

def fix_image_paths(xml_file):
    tree = ET.parse(xml_file)
    root = tree.getroot()
    # 遍历所有日志消息,替换图片绝对路径
    for msg in root.findall('.//message'):
        if not msg.text:
            continue
        # 处理直接记录路径的情况
        if msg.text.endswith('.png'):
            msg.text = os.path.basename(msg.text)
        # 处理<img>标签的情况
        elif '<img' in msg.text:
            # 提取src属性里的路径并替换为文件名
            src_start = msg.text.find('src="') + 5
            src_end = msg.text.find('"', src_start)
            old_path = msg.text[src_start:src_end]
            new_path = os.path.basename(old_path)
            msg.text = msg.text.replace(old_path, new_path)
    # 保存修改后的xml
    tree.write(xml_file, encoding='utf-8', xml_declaration=True)

# 执行修复,替换为你的output.xml路径
fix_image_paths("Output/output.xml")

修复后,重新运行rebot生成报告:

rebot Output/output.xml -d Output

3. 验证迁移后的报告

修改完成后,把Output文件夹迁移到任意位置,打开log.html就能正常加载图片了——因为日志里的图片路径是相对当前文件夹的文件名,浏览器会直接在Output文件夹内查找图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:15:06