使用ruby capybara获取页面的所有href链接

时间:2014-11-26 17:08:09

标签: ruby cucumber capybara

我在获取页面链接列表并将其保存为数组时遇到问题,因此我可以找到页面中使用的链接

<ul class="test">   
 <li class="social_1"></li>
     <a href="link1"></a>   
 <li class="social_2"></li>
     <a href="link2"></a>   
 <li class="social_3"></li>
     <a href="link3"></a>   
 <li class="social_4"></li>
     <a href="link4"></a> 
</ul>

我尝试使用

list_items = page.all('li').collect(&:href)
puts list_items;

但它没有给出正确答案。

我有这个错误

  undefined method `href' for #<Capybara::Element tag="li"> (NoMethodError)

1 个答案:

答案 0 :(得分:3)

有两个问题:

  • href属性存在于a元素而不是li元素上。
  • 元素没有href方法。要获取属性值,请使用[]方法。

根据您的偏好,以下任何一项都可以使用:

page.all('li').map { |li| li.find('a')['href'] }

page.all('li a').map { |a| a['href'] }

page.all('a').map { |a| a['href'] }