我正在使用Robot Framework + Selenium2Library为web编写验收测试。关键是web包含一些我无法自动化的输入字段(CAPTCHA),我无法告诉我的供应商在运行测试时关闭此功能。所以我必须手动输入这个字段。现在我这样做:
Create User
[Arguments] ${username} ${password}
Open Browser ${URL} ${BROWSER}
Input Text username ${username}
Input Text password ${password}
Sleep 10 # XXX input CAPTCHA manually here!
Click Button submit
Page Should Contain ${username} has been created.
当我告诉Robot Framework Sleep 10
时,我输入了CAPTCHA,到目前为止一直很好。但我不知道有没有告诉Robot Framework无限期等待,然后在我完成CAPTCHA的输入后继续自动执行任务?
答案 0 :(得分:3)
我可以看到一些选项:
您可以删除睡眠和按钮点击并自行完成。然后,在按下提交按钮
后,您可以使用wait to pages contains继续Create User
[Arguments] ${username} ${password}
Open Browser ${URL} ${BROWSER}
Input Text username ${username}
Input Text password ${password}
Log Waiting for CAPTCHA
Wait Until Page Contains ${username} has been created. timeout=3600
您还可以使用Dialogs-library中的Pause Execution关键字。这会暂停执行,直到您在弹出窗口中单击“确定”。
Create User
[Arguments] ${username} ${password}
Open Browser ${URL} ${BROWSER}
Input Text username ${username}
Input Text password ${password}
Pause Execution Enter captcha
Click Button submit
Page Should Contain ${username} has been created.
我能想到的最自动化的方式是使用CAPTCHA解决服务。我相信他们有一个API,您可以在其中发送页面的屏幕截图并获得已解决的CAPTCHA。我从来没有尝试过它们,分享你的软件截图可能不是一个选择。
答案 1 :(得分:2)
在Robot Framework附带的Dialog库中只有a keyword。
Execute Manual Step Please complete the CAPTCHA portion of the form.
答案 2 :(得分:0)
您也可以使用命令 - get value from user
。
它打开弹出窗口并告诉用户插入文本值(比如输入验证码出现在页面上),当用户输入验证码值并单击确定后,此值将被插入验证码窗口并开始下一步操作。 / p>
代码是:
#Use Library Dialogs
open browser http://sitename ff
input text id=name-id anytext
${Captcha} = get value from user Enter Captcha none none
input text id=captcha-id ${Captcha}
click element id=submit-id
注意:最初使用“Libray Dialogs”