質問

iは短くなります。

私が知る限り、watirライブラリはhtml要素を取得するための2つのメソッドを提供します。

各要素(div、button、table、liなど)に対して、watirは2つのメソッドを提供します:

。 1つは、特定の要素を1つだけ取得する「特異」メソッドです。例:

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

これらのメソッドは、単一要素のみを取得します。大丈夫...

。 2番目は、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
  • だけにしてください

あなたの例も奇妙です:

  

iすべてのリンクをフラッシュしたい   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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top