2014-05-07 84 views
1

我遇到了凍結測試,但實際上它被卡在重試循環中。重試嘗試的最大次數

Wait Until Keyword Succeeds | 60 sec | 12 sec

第一個參數是一個嘗試的超時,第二個是重試間隔。但是,如果任務類似於大型數據集上的「Xpath應匹配X次」,它可能永遠不會在給定時間內成功,下一次嘗試將再次從頭開始。

是否有辦法限制在這種情況下重試嘗試的最大次數?

回答

2

您的情況有點奇怪,因爲從理論上來說,等待關鍵字成功時沒有「無限重試循環」這樣的事情,因爲第一個參數不是「嘗試超時」而是「所有嘗試的全局超時」 。所以在你的情況下,它會每12秒嘗試一次,並在60秒過後停止。也許你應該重新考慮你使用這些信息的價值。

要回答你的問題,沒有辦法(AFAIK)給予最大嘗試次數。我有這樣的需要對於某些關鍵字,我想到了我自己的自定義關鍵字:

Run_keyword_n_times_and_stop_if_success 
    [Arguments] ${keyword} ${number_tries} 
    :FOR ${index} IN RANGE ${number_tries} 
    \ ${result} ${error_message} = Run Keyword And Ignore Error ${keyword} 
    \ Pass Execution If '${result}' == 'PASS' keyword execution was successful 
    Fail ${error_message} 

這與沒有參數的關鍵字才能正常運行,但也許這可能是有助於你(因爲你沒有任何參數,或者因爲你可以詳細說明第一個版本)

+0

是的,你是正確的,我的處境很奇怪。它實際上是瀏覽器上的「緩慢腳本錯誤彈出窗口」,它阻止了測試,但我最初的猜測是錯誤的,並且我誤解了超時。 –

0

感謝您的Retry關鍵字。用帶參數的關鍵字來使用它。

Run Keyword N Times And Stop If Success 
[Arguments] ${number_tries} ${keyword} @{args} 
: FOR ${index} IN RANGE ${number_tries} 
\ ${result} ${error_message} = Run Keyword And Ignore Error ${keyword} @{args} 
\ Pass Execution If '${result}' == 'PASS' keyword execution was successful 
Fail ${errorLog_message} 

使用範例:

@{args} Create List @{User} ${Url} ${Browser} 
Run Keyword N Times And Stop If Success 5 Login @{args} 
相關問題