在机器人脚本执行期间动态更改变量



我正在编写一个机器人脚本,它可以浏览请求一次性密码(OTP)的页面。流程是脚本将打开一个应用程序,然后它将等待一个OTP,我将手动将OTP输入到机器人脚本中,使其继续运行。然而,它不适合我。

到目前为止我写的是:

test.robot

***Settings***
Variables       OTP.py
***Test Cases***
Open Application
Open Application 
Enter OTP
Sleep       5
Input Text      textbox      ${otp}     

OTP.py

otp = "12345"

所以我要做的是运行应用程序,当应用程序到达提示OTP的页面时,在睡眠期间(5),我将在OTP.py中更改OTP的值,以便机器人脚本调用正确的值,继续进行。但是,它总是返回前一个值(在更改之前,在本例中为12345)。

有人知道我可以在执行过程中动态更改值吗?非常感谢,谢谢!

首先,最好的解决方案为用户输入测试期间将Dialogs图书馆这是标准库的一部分。所以你的例子看起来像:

*** Settings ***
Library    Dialogs
*** Keywords ***
Enter OTP
${otp}    Get Value From User    Please provide OTP code
Input Text      textbox      ${otp}

但这种解决方案远不可靠,而且依赖于用户交互。更好的解决方案是使用pyotp编写自定义python关键字,该关键字将生成OTP代码。这种关键字的示例如下:

# OTPCodes.py
import pyotp

class OTPCodes:
def generate_otp_code(self, secret):
totp = pyotp.TOTP(secret)
return totp.now()

and in robot:

*** Settings ***
Library    OTPCodes.py
*** Keywords ***
Enter OTP
${otp}    Generate Otp Code    <SECRET>
Input Text      textbox      ${otp}

更好的解决方案是不将SECRET作为参数传递,而是从环境变量中获取。

最新更新