我遇到了冻结测试,但实际上它被卡在重试循环中。重试尝试的最大次数
Wait Until Keyword Succeeds | 60 sec | 12 sec
第一个参数是一个尝试的超时,第二个是重试间隔。但是,如果任务类似于大型数据集上的“Xpath应匹配X次”,它可能永远不会在给定时间内成功,下一次尝试将再次从头开始。
是否有办法限制在这种情况下重试尝试的最大次数?
我遇到了冻结测试,但实际上它被卡在重试循环中。重试尝试的最大次数
Wait Until Keyword Succeeds | 60 sec | 12 sec
第一个参数是一个尝试的超时,第二个是重试间隔。但是,如果任务类似于大型数据集上的“Xpath应匹配X次”,它可能永远不会在给定时间内成功,下一次尝试将再次从头开始。
是否有办法限制在这种情况下重试尝试的最大次数?
您的情况有点奇怪,因为从理论上来说,等待关键字成功时没有“无限重试循环”这样的事情,因为第一个参数不是“尝试超时”而是“所有尝试的全局超时” 。所以在你的情况下,它会每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}
这与没有参数的关键字才能正常运行,但也许这可能是有助于你(因为你没有任何参数,或者因为你可以详细说明第一个版本)
感谢您的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}
是的,你是正确的,我的处境很奇怪。它实际上是浏览器上的“缓慢脚本错误弹出窗口”,它阻止了测试,但我最初的猜测是错误的,并且我误解了超时。 –