Ruby 使用selenium webdriver处理等待和睡眠之间的错误,哪一个更好?

Ruby 使用selenium webdriver处理等待和睡眠之间的错误,哪一个更好?,ruby,selenium-webdriver,Ruby,Selenium Webdriver,我们有时使用sleep(10),有时如下所示: wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds element = wait.until { driver.find_element :name => "search" } element = driver.find_element :name => "search" while true # do nothing next if !(drive

我们有时使用
sleep(10)
,有时如下所示:

wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
element = wait.until { driver.find_element :name => "search" }
element = driver.find_element :name => "search"
while true

 # do nothing

next if !(driver.title.include? "Buyer Home")

 driver.find_element(:link, "search").click
 break

end

根据我的
wait
设置了最大超时,在此期间,如果找到元素(
wait.until
sleep
在转到下一行方面不同。
wait.until
如果在指定的时间范围内找不到块(例如查找元素),将抛出异常

这两种方法减少错误的几率相同。如果将睡眠或超时设置为30秒,并且页面加载元素需要35秒,则这两种方法都会遇到错误(尽管针对不同的行)。等待。直到
的要点是,如果加载页面只需5秒,则不必总是等待30秒

我不确定什么样的实现比
wait.until
更好。如果找不到元素,程序应该失败。立即失败比等到依赖于该字段的内容运行时再等待更有意义

更新

根据评论,我将重新撰写

while true
  # do nothing
  next if !(driver.title.include? "Buyer Home")

  driver.find_element(:link, "search").click
  break
end
作为


查看我的编辑。希望有意义。如果您有任何更好的建议,欢迎随时提供。有时由于加载页面的时间过长,无法找到元素。这是我在案例中发现的网页自动化的基本问题。看起来您的编辑正在无限期地等待,直到标题出现,然后单击元素t、 我仍然会使用
wait.until
并将浏览器标题检查作为块。如果10秒还不够,你可以延长等待时间,但如果页面占用了那么长的时间,人们通常会认为页面存在错误(我相信有些文章用户希望页面在2秒或更短的时间内加载).Rubu 2.0 Suupports selenium webdriver版本
(2.31.0)
?有什么想法吗?我在执行
要求“selenium webdriver”
时出错了?我自己还没有尝试过。如果它不起作用,你可能想记录一个bug。好的!根据你对这篇文章的评论,你能给我一个你上面建议的代码吗?
wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
wait.until { driver.title.include? "Buyer Home" }
driver.find_element(:link, "search").click