如何在Robot Framework中实现执行每个关键字后自动睡眠1秒?
Robot Framework 实现关键字执行后自动睡眠1秒的方案
方法一:封装带自动睡眠的自定义关键字
把需要重复执行的操作(比如Click)和Sleep打包成新关键字,后续用例直接调用这个封装后的关键字即可:
*** Keywords *** # 针对Click的专属封装 Click And Sleep [Arguments] ${locator} Click ${locator} Sleep 1 # 通用封装,支持任意关键字 Run Keyword And Sleep [Arguments] ${keyword} @{args} Run Keyword ${keyword} @{args} Sleep 1
用例里的写法:
*** Test Cases *** Sample UI Test # 用专属封装 Click And Sleep id=btn_submit # 用通用封装适配其他关键字 Run Keyword And Sleep Input Text id=username test_account
方法二:使用监听器实现全局自动睡眠
如果不想修改原有用例的关键字写法,可以用Robot Framework的监听器功能,让所有关键字执行完成后自动触发睡眠(可排除不需要的关键字)。
- 新建Python监听器脚本
AutoSleepListener.py:
from robot.libraries.BuiltIn import BuiltIn class AutoSleepListener: ROBOT_LISTENER_API_VERSION = 3 def __init__(self, sleep_time="1"): self.sleep_time = sleep_time self.builtin = BuiltIn() def keyword_end(self, keyword_name, keyword): # 排除Sleep本身,避免无限循环 if keyword_name.lower() != "sleep": self.builtin.sleep(self.sleep_time)
- 在测试中启用监听器:
- 执行命令时指定:
robot --listener AutoSleepListener.py:1 your_test_suite.robot - 或者在测试套件的Settings里导入:
*** Settings *** Listener AutoSleepListener.py 1
- 执行命令时指定:
启用后,原有用例里只写Click ...即可,所有执行完的关键字(除了Sleep)都会自动睡眠1秒。
内容的提问来源于stack exchange,提问作者hamza bouabid
相关产品推荐
相关产品推荐

