【发布时间】:2015-10-06 11:25:01
【问题描述】:
我正在用 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)
我对此很陌生,因此非常感谢任何建议。谢谢!
【问题讨论】:
-
当您看到浏览器执行此操作时,它是否会在出现错误之前重新加载
back上的页面?我知道现在大多数浏览器都会去back,然后调用重新加载页面。不知道这是否是浏览器的一项功能,或者网络程序员是否都将他们的页面设置为强制重新加载后退按钮调用以刷新页面(并刷新他们的广告点击)。 -
您是否尝试过在下次点击之前添加一些等待时间,以防页面加载不够快?
-
@Beartech 看起来它试图在页面加载完成之前单击舔,但添加等待时间不起作用。