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

如何在Robot Framework+Selenium(Python)中修改自动截图命名规则?

解决Robot Framework自动截图自定义命名问题

核心方案:使用Listener拦截框架截图事件

Robot Framework在关键字失败时自动生成的截图由框架核心逻辑触发,无法通过普通关键字直接修改命名规则。通过自定义Listener可以拦截截图生成事件,替换默认文件名。

步骤1:编写Python Listener文件

创建CustomScreenshotListener.py,代码如下:

from robot.libraries.BuiltIn import BuiltIn

class CustomScreenshotListener:
    ROBOT_LISTENER_API_VERSION = 3

    def __init__(self):
        self.current_test_name = None

    def start_test(self, test, result):
        # 捕获当前测试名称,替换文件名非法字符
        self.current_test_name = test.name.replace(" ", "_").replace("/", "_").replace("\\", "_")

    def _screenshot(self, path):
        # 替换默认截图文件名前缀
        if self.current_test_name and "selenium-screenshot" in path:
            return path.replace("selenium-screenshot", f"{self.current_test_name}-screen")

步骤2:在测试套件中引入Listener

在测试套件的*** Settings ***区块添加Listener配置:

*** Settings ***
Library    SeleniumLibrary
Listener    CustomScreenshotListener.py  # 若文件不在当前目录,需写绝对路径或相对路径

方案说明

  • start_test方法会在每个测试用例启动时捕获测试名称,提前处理空格、斜杠等文件名不允许的特殊字符。
  • _screenshot是Robot Framework内部监听方法,框架生成截图(包括关键字失败自动触发的截图)时会调用此方法,我们在这里将默认的selenium-screenshot前缀替换为{测试名}-screen,框架会自动使用修改后的路径保存截图。

注意事项

  • 确保Listener文件路径正确,若测试文件和Listener不在同一目录,可将Listener所在目录添加到Python环境变量PYTHONPATH,或直接写绝对路径。
  • 可根据需求调整测试名称的字符替换规则,避免生成无效文件名。
  • 该方案会覆盖所有未指定文件名的截图(包括主动调用Capture Page Screenshot但未传参的情况),如需区分主动/自动截图,可在_screenshot方法中增加逻辑判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:15:52