3

href の配列を返すために Watir が必要です。これらの href はすべて同じ div にあり、すべて同じクラスを持っています。ページの最初の href を取得するコードは次のようになります。

b.div(:class => 'products').link(:class => 'product_detail_url').href

しかし、その後、そのdivで利用可能なすべてのhrefをループする方法がわかりません。

私は正直にあちこちを調べましたが、見つけた解決策のどれも私の特定のニーズに対応しているようには見えませんでした. 読んでくれてありがとう、うまくいけば誰かが解決策を持っています。

4

2 に答える 2

2

試す:

b.div(:class => 'products').links(:class => 'product_detail_url').each do |link|
  puts link.href
end

基本的に、これは特定のクラスを持つリンクのコレクションを反復処理します。

アップデート:

すべての href を配列に収集するには、collect メソッドを使用します。

link_arr = b.div(:class => 'products').links(:class => 'product_detail_url').collect{ |link| link.href }

または、読みやすいように 2 行に分割します。

link_collection = b.div(:class => 'products').links(:class => 'product_detail_url')
link_arr = link_collection.collect{ |link| link.href }
于 2012-08-29T17:56:48.740 に答える
1

または、#mapを#collectのエイリアスとして使用し、short-block-syntaxを使用して、さらに短く書くこともできます。

hrefs = b.div(:class => 'products').links(:class => 'product_detail_url').map(&:href)
于 2012-08-30T15:48:12.583 に答える