使用机器人框架手动输入(验证码)?
Posted
技术标签:
【中文标题】使用机器人框架手动输入(验证码)?【英文标题】:Manual input (Captcha) with Robot Framework? 【发布时间】:2016-07-18 04:12:45 【问题描述】:我正在使用 Robot Framework + Selenium2Library 编写网络验收测试。关键是 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
时,我已经输入了验证码,到目前为止一切顺利。但我想知道有没有办法告诉 Robot Framework 无限期地等待,然后在我输入完 CAPTCHA 后继续自动执行任务?
【问题讨论】:
您可以告诉它等到任意数量的选项后再继续。例如,在可选或不需要的字段中输入一些随机文本。如果是我,我可能会更改顺序,因此在测试开始时您填写验证码,然后让它等到您将焦点放在用户名字段中并从那里继续 【参考方案1】:Robot Framework 自带的 Dialog 库中有 a keyword 就是为了这个目的。
Execute Manual Step Please complete the CAPTCHA portion of the form.
【讨论】:
别忘了导入库Library Dialogs
【参考方案2】:
我可以看到几个选项:
您可以移除睡眠和按钮点击并自行完成。然后,您可以在按下提交按钮后使用等待直到页面包含继续
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,您可以在其中发送页面的屏幕截图并返回已解决的验证码。我从未尝试过它们,并且可能无法共享您的软件的屏幕截图。
【讨论】:
【参考方案3】:您也可以使用命令-get value from user
。
它打开弹出窗口并告诉用户插入文本值(就像在页面上输入验证码一样),当用户输入验证码值并单击“确定”时,该值将插入验证码窗口并开始下一个操作。
代码是:
#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
注意:最初使用“库对话框”
【讨论】:
以上是关于使用机器人框架手动输入(验证码)?的主要内容,如果未能解决你的问题,请参考以下文章