wait_until块正在给出超​​时错误

时间:2015-04-04 18:57:22

标签: ruby cucumber watir

这是我失败的代码。

link(:continue, :text => 'Continue Shopping')

def verify_cart
    wait_until(60) do
      continue_element.visible?
    end
  end

为了使它工作我在这里尝试了解决方案: Inconsistently getting error (Watir::Wait::TimeoutError)Timeout::Error in Rails application using Watir但没有一个对我有效。

我也试过增加时间。

然后我尝试将at implicit wait从3秒增加到20秒而不是使用wait_until块我只使用.visible?并且它有效。

link(:continue, :text => 'Continue Shopping')

continue_element.visible?

 #def verify_cart
 #   wait_until(60) do
 #     continue_element.visible?
 #   end
 # end 

现在问题是元素何时出现wait_until失败的原因?

1 个答案:

答案 0 :(得分:0)

continue_element.visible? 

不会引发错误,它只会返回一个布尔值。听起来这个元素实际上并没有显示出来,无论隐含的等待如何,这仍然会引发错误:

raise unless continue_element.visible?

此外,更好的模式是:

continue.wait_until_present 

continue.when_present.click 

.present?只是意味着.exists?&& .visible?这实际上就是你想要的,这个模式会给你一个更好的错误信息。