我自动执行一个过程,该过程涉及加载许多页面并将表单字段值从这些页面复制到其他页面中。
有时,页面最初无法加载,但会成功重新加载。 是否有内置机制来获取watir-webdriver来执行此操作?请注意,我没有问同样的问题: How to deal with a page which fails to load and continue testing in Watir-Webdriver
在我的情况下,我不会在失败后继续前进。在救援中重新加载开始/救援中的所有点击操作可以起作用,我只是想知道是否有针对此问题的内置解决方案。
答案 0 :(得分:1)
我认为没有内置的机制可以做到这一点,我通常做这样的事情。
创建一个带块的可重复块方法。也许是这样的:
require 'timeout'
def retriable(num_retries = 0, timeout = 5, &block)
Timeout.timeout(timeout) do
block.call
end
rescue Timeout::Error => e
if num_retries <= 0
raise e
else
puts "Request timed out. Trying #{num_retries} more times"
num_retries -= 1
retry
end
end
在您的代码中使用它:
retries = 3
timeout_before_retry = 10 # seconds
retriable(retries, timeout_before_retry) do
browser.goto("http://google.com")
end