我会很短。

据我所知,watir 库提供了两种获取 html 元素的方法。

几乎对于每个元素(div、button、table、li 等)watir 都提供了两种方法:

. 。一种是“单一”方法,仅获取一个特定元素。例如:

watir_instance.div(:id,'my_div_id')
watir_instance.link(:href,'my_link_href')
watir_instance.button(:class =>'my_button_class', :index => 4)

这些方法只会检索单个元素。没关系...

. 。第二个是“复数”方法,它将检索 watir 实例的所有元素

watir_instance.divs
watir_instance.links
watir_instance.buttons

但据我所知,watir 没有提供一种在特定条件下获取多个元素的方法。

例如...如果我想刷新所有带有 id:my_link_id 的链接,那么做这样的事情会很容易:

watir_instance.divs(:id, 'my_link_id').each do |link|
  link.flash
end

有了 hpricot,这个任务就变得非常简单......但如果你的目标不是解析,我找不到一个 Watir 方法来完成我想要的任务。

希望你能理解我...

干杯,胡安!!

有帮助吗?

解决方案

胡安,

您的脚本有几个问题:

  • 你说你想闪烁所有链接,但随后你使用 watir_instance.divs. 。它应该是 watir_instance.links
  • 你将参数传递给 divs 方法: watir_instance.divs(:id, 'my_link_id'). 。应该只是 watir_instance.divs

你的例子也很奇怪:

我想用ID闪烁所有链接:my_link_id

据我所知,id在页面上应该是唯一的。

所以,这里有不同的例子:

1)刷新本页所有链接:

require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
  link.flash
end

2) 刷新此页面上所有包含的链接 questions 在 URL 中(奖励:滚动页面,以便看到闪烁的链接):

require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
  if link.href =~ /questions/
    link.document.scrollintoview
    link.flash
  end
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top