4

好吧,我想评论 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 的博客上提问(顺便说一句)。

4

1 回答 1

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
于 2011-09-15T00:52:54.870 回答