3

我需要 Watir 返回一组 href。这些 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 }

或将其分成两行以便于阅读:

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 的别名和短块语法来编写更短的代码:

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