我们有时使用sleep(10)
或有时如下:
wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
element = wait.until { driver.find_element :name => "search" }
element = driver.find_element :name => "search"
根据我的说法,wait
我们设置了最大超时,在此期间,如果找到元素 ( <10 seconds
),我们将移至下一行,或者如果再次找不到,我们将移至下一行,但在 10 秒后,如我之前设置的那样。
但是sleep()
我们必须等待程序必须等待10 seconds
是否在该持续时间内加载了所需的元素。
两者通常用于element not found
基本防止错误。
现在我的问题是——
wait
和 之间还有什么区别sleep
吗?哪一个更好的设计可以减少出错的机会?
有没有更好的实现来处理这种情况,我们可以
element not found
有效地处理这种错误而不会导致程序失败?
编辑
对于最后一个问题,我发现了一个最小风险代码,如下所示:
while true
# do nothing
next if !(driver.title.include? "Buyer Home")
driver.find_element(:link, "search").click
break
end