2014-05-07 60 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} 
相关问题