为什么我必须睡觉或等待使用watir-webdriver和firefox?

时间:2011-09-15 00:40:16

标签: firefox watir webdriver watir-webdriver

我想评论watir-webdriver等待页面加载>这个主题,但因为我有1个代表我不能。

我正在将我的watir脚本升级到watir-webdriver并且我在Firefox上运行的第一个测试得出了:

Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"tag name","selector":"body"}

当我所做的只是登录我的应用程序(工作正常),点击构建信息链接,然后执行:

@browser.text

这种情况一直发生。在这里阅读之后,我在点击之后和@ browser.text之前进行了一次睡眠并且它起作用了。我的结论显然是Firefox驱动程序在尝试

之前没有等到页面加载
-> POST session/8607aaa2-d72d-448a-85e1-3f96a1766da1/element
{"value":"body","using":"tag name"}

所以我的问题是这是一个孤立的事件(调用@ browser.body,这不是一个完全典型的调用)或者我将不得不使用等待?如果我不能指望驱动程序等到浏览器处于就绪状态,那么看起来整个美丽的watir都会丢失。此外,是否有一个开发谷歌组或类似的东西为watir-webdriver?我觉得我会看到越来越多的问题(IE9的几个问题)。我可能也会在Alister的博客上询问(哪个是摇滚,顺便说一下。)

1 个答案:

答案 0 :(得分:6)

Watir-WebDriver应该等到页面准备就绪,但问题是动态生成了很多内容,确实没有一个明确的准备就绪。

这是等待助手方法的亮点:http://watirwebdriver.com/waiting/

找到您期望的元素,并使用以下内容:

require 'watir-webdriver'
b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
b.select_list(:id => 'entry_1').wait_until_present

<强>更新

我认为您的问题与原生事件有关。尝试禁用本机事件

profile = Selenium::WebDriver::Firefox::Profile.new
profile.native_events = false
b = Watir::Browser.new WEB_DRIVER, :profile => profile