Watir错误:无法定位元素

时间:2015-07-16 20:31:48

标签: ruby watir

我正在用Watir写一个网络刮刀,我似乎无法弄清楚我得到的这个错误。我有一个特定页面链接的文本数组,但是当我循环浏览它并单击链接然后返回时,它会中断。

这是HTML代码

<div>
  <a href="wherever">Text here</a>
</div>
<div>
  <a href="wherever">Text here 2</a>
</div>
<div>
  <a href="wherever">Text here 3</a>
</div>

这是我的Watir代码

browser = Watir::Browser.new
browser.goto 'some_valid_site.com'
array = ['Text here', 'Text here 2', 'Text here 3']
array.each do |text|
  browser.link(:text, text).click
  browser.back
end

它正确执行第一个链接,但是当涉及到第二个链接时,我收到以下错误消息:

ruby-2.2.2@gemset/gems/watir-webdriver-0.8.0/lib/watir-webdriver/elements/element.rb:533:
in `assert_element_found': unable to locate element, 
using {:element=>#<Selenium::WebDriver::Element:0x1bef61e9aef3c36a 
id="{ad42ba23-8037-a745-8fd7-21955ab49406}">} 
(Watir::Exception::UnknownObjectException)

我对此很新,所以任何建议都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:3)

Watir有wait_until_present方法:

browser = Watir::Browser.new
browser.goto 'some_valid_site.com'
array = ['Text here', 'Text here 2', 'Text here 3']
array.each do |text|
  browser.link(:text, text).wait_until_present
  browser.link(:text, text).click
  browser.back
end   

默认等待时间是30秒,应该绰绰有余。如果页面未在back上重新加载,则可能需要使用显式网址。