我正在编写一个机器人脚本,它可以在请求一次性密码(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 )。
有人知道我可以在执行过程中动态地更改值吗?非常感谢,谢谢!
发布于 2022-07-06 10:32:00
首先,测试期间用户输入的最佳解决方案是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()在机器人中:
*** Settings ***
Library OTPCodes.py
*** Keywords ***
Enter OTP
${otp} Generate Otp Code <SECRET>
Input Text textbox ${otp}更好的解决方案不是将SECRET作为参数传递,而是从环境变量中获得它。
https://stackoverflow.com/questions/72881238
复制相似问题