2016-03-30 82 views
3

我正在爲使用Robot Framework + Selenium2Library的Web編寫驗收測試。問題是,網絡包含一些我無法自動運行的輸入字段(CAPTCHA),並且我無法告訴供應商在運行測試時關閉此功能。所以我必須手動輸入這個字段。現在我這樣做:手動輸入(Captcha)與Robot Framework?

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. 

我已經輸入驗證碼,當我告訴機器人框架來Sleep 10,到目前爲止,一切順利。但我不知道是否有告訴Robot Framework無限期地等待,然後在完成輸入CAPTCHA後繼續自動化任務?

+0

你可以告訴它要等到任意數量的繼續之前的選項。例如,在可選或不需要的字段中輸入一些隨機文本。如果是我,我可能會改變順序,所以在測試開始時你填寫驗證碼,然後等待,直到你把焦點放在用戶名字段中並讓它從那裏繼續。 – shicky

回答

2

a keyword僅適用於Robot Framework附帶的Dialog庫。

Execute Manual Step Please complete the CAPTCHA portion of the form. 
+0

不知道那個關鍵字,謝謝@ ombre42 – shicky

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 

您還可以使用從對話框庫暫停執行關鍵字後,您可以使用的等待。這會暫停執行,直到您在彈出窗口中單擊確定。

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。我從來沒有嘗試過,共享軟件的屏幕截圖可能不是一個選項。

0

您也可以使用命令get value from user

它打開彈出窗口並告訴用戶插入文本值(如輸入captcha在頁面上顯示),當用戶輸入驗證碼值並單擊ok時,此值將插入到驗證碼窗口中,並開始下一個操作。

代碼是:

#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對話框」最初