-
07-07-2019 - |
質問
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
所属していません StackOverflow