处理页面,或者即使页面未完全加载也会被通知元素存在

时间:2014-07-31 20:43:16

标签: watir-webdriver

由于我正在加载/使用许多外部脚本,我正在使用watir-webdriver的页面通常不会完全加载,因为可能只需要一分钟。这当然意味着我必须等待一段时间才能在我控制的浏览器(Firefox)开始加载页面后10秒内完成我想要的检查。

我注意到即使我的目标元素在页面中立即可用,但是browser.div(:id =>'some_id')。存在?方法挂起,直到页面完全加载。我注意到如果我按下浏览器窗口中的停止按钮,watir将立即成功继续我的测试(当前?方法取消挂起)。有没有办法避免现在的这种行为?方法,并能够告诉我的目标元素是否存在而不必等待页面完全加载?

2 个答案:

答案 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?

这只是确保该项目可见,但我不会使用那个。