2

我会很短。

据我所知,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 方法。

希望你能理解我...

干杯,胡安!

4

1 回答 1

2

胡安

您的脚本有几个问题:

  • 你说你想刷新所有链接,但是你使用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
于 2009-09-17T08:53:03.487 回答