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

<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)

最佳答案

有两个问题:

  • 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'] }
    

    关于ruby - 使用 ruby​​ capybara 获取页面的所有 href 链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27154987/

    10-17 00:39