这是我失败的代码。
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
失败的原因?
答案 0 :(得分:0)
continue_element.visible?
不会引发错误,它只会返回一个布尔值。听起来这个元素实际上并没有显示出来,无论隐含的等待如何,这仍然会引发错误:
raise unless continue_element.visible?
此外,更好的模式是:
continue.wait_until_present
或
continue.when_present.click
.present?
只是意味着.exists?
&& .visible?
这实际上就是你想要的,这个模式会给你一个更好的错误信息。