不能用Capybara迭代链接的数组

时间:2015-03-16 01:11:15

标签: ruby arrays loops cucumber capybara

我正在尝试用Capybara迭代链接的数组。这是雅虎主页,我试图连续检查左侧栏中的所有链接(“邮件”,“新闻”,“体育”等)。这是一段html('Mail'):

<a class="ell fz-s " href="http://hsrd.yahoo.com/_ylt=A2KLtiE7CQZVoV8AGBmbvZx4/RV=1/RE=1427668539/RH=aHNyZC55YWhvby5jb20-/RO=2/RU=aHR0cDovL3Nwb3J0cy55YWhvby5jb20v/RS=^ADA0Gc4IcWXarglWyV.UMCa7fh5TLA-"> <i id="nav-sports" class="img-sprite"></i><span>Sports</span></a>

我正在尝试将所有链接元素推送到数组,然后访问每个元素:

page.all('.ell.fz-s').each { |el|
    link = el[:href]
    visit(link)
  }

但它仅适用于第一个链接,然后停止。我做错了什么?

2 个答案:

答案 0 :(得分:1)

你应该像Taryn East建议的那样存储hrefs。

但是,不要只访问链接,而是访问完整网址。

links.each do |link|
  visit(url + link)
end

希望它能帮助别人。

答案 1 :(得分:0)

是..所以问题是,在你访问第一个链接后...你现在在不同的页面上有不同的链接所以在那之后引用链接就会中断(对旧链接的引用是陈旧的)< / p>

您可能需要首先取出所有链接 - 然后开始访问它们,例如尝试类似:

# pull them out of the page and stuff the actual links away in a separate array
links = page.all('.ell.fz-s').map { |el| el[:href] }

puts links.inspect

links.each do |link|
  visit link
 end