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

如何将外部Python库生成的截图嵌入Robot Framework的log.html?

把外部Python库的截图和测试结果嵌入Robot Framework log.html的方法

嘿,作为Robot Framework结合Selenium的初学者,你的需求完全可以实现!下面给你几个实用的方案,帮你轻松把外部Python库生成的内容整合到RF的log.html里:

1. 直接用Robot Framework的日志API记录内容

Robot Framework提供了专门的Python API来操作日志,你可以在外部Python库的代码里直接调用它,让内容自动出现在log.html中。

记录测试结果

在你的Python函数里导入robot.api.logger,然后用它来记录不同级别的日志:

from robot.api import logger

def get_external_test_result():
    # 调用外部库获取测试结果
    test_result = "用户数据校验通过,符合预期格式"
    # 把结果写入RF日志,同时输出到控制台(可选)
    logger.info(test_result, also_console=True)
    # 如果是警告或错误,用对应的级别
    # logger.warn("注意:外部库返回非标准格式数据")
    # logger.error("外部库执行出错,无法生成结果")
    return test_result

嵌入截图

如果外部库已经生成了截图文件,你可以用HTML标签把图片直接插入日志:

from robot.api import logger

def generate_and_log_screenshot():
    # 调用外部库生成截图,保存到指定路径
    screenshot_path = "./external_screenshots/step1_result.png"
    # 用HTML img标签嵌入图片,还可以设置样式
    logger.info(f'<img src="{screenshot_path}" alt="外部库生成的截图" style="max-width:600px; border:1px solid #ccc;">', html=True)

2. 用RF内置关键字直接处理

如果你的Python函数返回截图路径或结果文本,也可以在RF测试用例里用内置关键字来嵌入:

嵌入截图

用Log Image关键字直接加载外部截图:

*** Test Cases ***
Integrate External Content
    # 调用外部Python库获取截图路径
    ${screenshot_path}    Call External Lib Function
    # 把截图嵌入log.html,可设置宽度
    Log Image    ${screenshot_path}    width=500px

记录测试结果

直接用Log关键字展示外部返回的结果:

${test_result}    Get External Test Result
Log    外部库执行结果:${test_result}    INFO

3. 封装自定义关键字(更推荐)

把外部库的逻辑和RF日志操作封装成一个自定义关键字,这样测试用例会更简洁,复用性也更强:

from robot.api.deco import keyword
from robot.api import logger
from robot.api.exceptions import Failure
import your_external_python_lib

@keyword
def run_external_task_with_log():
    # 执行外部库任务
    task_status = your_external_python_lib.execute_task()
    
    # 根据结果标记测试状态并记录日志
    if task_status == "success":
        logger.info("✅ 外部库任务执行成功", level="INFO")
    else:
        # 抛出Failure异常,让RF自动标记测试用例为失败
        raise Failure(f"❌ 外部库任务执行失败,状态:{task_status}")
    
    # 生成并嵌入截图
    screenshot_path = your_external_python_lib.capture_screenshot()
    logger.info(f'<img src="{screenshot_path}" alt="任务执行截图" style="max-width:600px;">', html=True)
    
    return task_status

然后在RF测试用例里直接调用这个关键字即可:

*** Test Cases ***
Run External Task
    Run External Task With Log

注意事项

  • 确保截图路径是绝对路径,或者相对于RF运行目录的相对路径,否则log.html可能无法加载图片;
  • 如果用HTML标签嵌入图片,要在logger.info里加上html=True参数,否则RF会把标签当成普通文本显示;
  • 用Failure/Success异常可以让RF自动管理测试用例的状态,不用手动标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:56:01