按属性获取元素

时间:2009-09-16 18:28:57

标签: html ruby parsing automated-tests watir

我将会做空。

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

几乎每个元素(div,button,table,li等)都有两种方法:

。一种是“单数”方法,它只获得一个特定元素。例如:

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方法。

希望你能理解我......

干杯,胡安!!

1 个答案:

答案 0 :(得分: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)点击此页面上URL中有questions的所有链接(奖励:滚动页面以便可以看到闪烁的链接):

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