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

Robot Framework脚本执行期动态修改变量不生效问题咨询

问题原因

Robot Framework 会在测试启动的初始化阶段,一次性加载所有在*** Settings ***块中通过Variables引入的变量文件到内存中,测试执行过程中不会自动重新读取磁盘上的变量文件。你在Sleep阶段修改本地OTP.py的操作,只会改动磁盘上的文件,不会同步更新已经加载到测试执行上下文内存里的${otp}值,所以脚本永远会读取到启动时加载的初始值12345。

可行实现方案

方案1:保留你改文件的操作习惯,动态加载变量文件

删掉Settings里提前引入OTP.py的配置,在Sleep等待结束、需要输入OTP的前一步,用内置关键字Import Variables运行时动态读取变量文件,这时候读到的就是你刚修改完的新值。
修改后的test.robot代码如下:

*** Settings ***
# 移除原有的 Variables       OTP.py 配置,不在启动时加载

*** Test Cases ***
Open Application
    Open Application 

Enter OTP
    Sleep       5
    # 等待你手动修改完OTP.py后,执行到这步才会读取文件中的最新值
    Import Variables       OTP.py
    Input Text      textbox      ${otp}

这个方案和你原本的操作逻辑完全兼容,只需要调整变量加载的位置即可。

方案2:改用交互输入,省去修改文件的步骤

用Robot Framework自带的Dialogs标准库,执行到OTP步骤时弹出输入框,你手动填入当前收到的OTP值后脚本自动继续执行,不用来回切编辑器改文件。
示例代码:

*** Settings ***
Library    Dialogs    # 引入自带的对话框库,无需额外安装

*** Test Cases ***
Open Application
    Open Application 

Enter OTP
    # 弹出输入提示框,输入完成后值存入${otp}变量
    ${otp} =    Get Value From User    请输入当前收到的6位OTP验证码
    Input Text      textbox      ${otp}

方案3:全自动生成OTP(适合能拿到OTP种子密钥的场景)

如果你手里有OTP校验用的种子密钥,可以直接接入pyotp库在脚本运行时自动生成当前时间窗口有效的OTP值,完全不需要人工操作。
示例代码片段:

*** Settings ***
Library    pyotp

*** Test Cases ***
Enter OTP
    ${totp} =    pyotp.TOTP    你的OTP种子密钥
    ${current_otp} =    ${totp.now()}
    Input Text    textbox    ${current_otp}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:02:15