使用Robot Framework手动输入(Captcha)?

时间:2016-03-30 08:56:41

标签: robotframework selenium2library

我正在使用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的输入后继续自动执行任务?

3 个答案:

答案 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”