3

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 に を伝えるときに CAPTCHA を入力しましたがSleep 10、今のところ問題ありません。しかし、ロボットフレームワークに無期限に待機するように指示し、そのCAPTCHAの入力が完了した後、タスクの自動化を続行する方法があるのだろうか?

4

3 に答える 3

4

Robot Framework に付属の Dialog ライブラリには、この目的のためだけのキーワードがあります。

Execute Manual Step    Please complete the CAPTCHA portion of the form.
于 2016-03-30T14:40:30.370 に答える
3

いくつかのオプションが表示されます:

スリープとボタンのクリックを削除して、自分で行うことができます。次に、送信ボタンを押した後、ページが含まれるまで待機を使用して続行できます

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 キーワードを使用することもできます。これにより、ポップアップで [OK] をクリックするまで実行が一時停止されます。

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 解決サービスを使用することです。ページのスクリーンショットを送信して、解決済みの CAPTCHA を取得する API があると思います。私はそれらを試したことがなく、ソフトウェアのスクリーンショットを共有することは選択肢にならないかもしれません.

于 2016-03-30T09:40:26.943 に答える