返回hrefs数组

时间:2012-08-29 17:50:23

标签: ruby watir watir-webdriver

我需要Watir来返回一个hrefs数组。这些href都在同一个div中,它们都有相同的类。我在页面上抓取第一个href的代码如下所示:

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

但是,之后我无法找到如何遍历该div中所有可用的href。

我老实地看着这个地方,但我找到的解决方案似乎都没有解决我的具体需求。感谢阅读,希望有人有解决方案。

2 个答案:

答案 0 :(得分: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 }

答案 1 :(得分:1)

或者你可以使用#map作为#collection的别名和短块语法来写得更短:

hrefs = b.div(:class => 'products').links(:class => 'product_detail_url').map(&:href)