由于我正在加载/使用许多外部脚本,我正在使用watir-webdriver的页面通常不会完全加载,因为可能只需要一分钟。这当然意味着我必须等待一段时间才能在我控制的浏览器(Firefox)开始加载页面后10秒内完成我想要的检查。
我注意到即使我的目标元素在页面中立即可用,但是browser.div(:id =>'some_id')。存在?方法挂起,直到页面完全加载。我注意到如果我按下浏览器窗口中的停止按钮,watir将立即成功继续我的测试(当前?方法取消挂起)。有没有办法避免现在的这种行为?方法,并能够告诉我的目标元素是否存在而不必等待页面完全加载?
答案 0 :(得分:1)
我之前也遇到过这个问题。我使用的方法,根据您提到的关于按下停止按钮的想法,如下所示:
begin
browser.wait_until{browser.div(:id => 'some_id').present?}
rescue
browser.send_keys :escape
end
expect(browser.div(:id=> 'some_id').present?).to be true
默认情况下,这会使div显示30秒(如果您愿意,可以插入一个较小的值,然后输入30),否则会导致watir点击“escape”,这将停止任何剩余的后台页面加载并恢复测试
答案 1 :(得分:0)
.present?
据我了解,它会检查元素是否存在且是否可见。
我建议你试试,
.exists?
这将只检查元素是否存在,并且不关心它是否可见。
仅供参考,还有一个
.visible?
这只是确保该项目可见,但我不会使用那个。