capybara使用访问for循环

时间:2013-02-26 15:45:45

标签: ruby loops xpath capybara

我有一个代码,它试图访问几个网页并将它们添加到收藏夹。正如我所说,一旦你使用访问,capybara无法继续使用其余的命令,请检查下面的代码;

sub_menus = all('li a')
for i in 0..(sub_menus.length-1)
  if (sub_menus[i]['href'] == "http://intranet/Intranet/#") || (sub_menus[i]['href'] !~ /http:\/\/intranet(.*)/)
    next
  else
    visit sub_menus[i]['href']
    $links.push(sub_menus[i]['href'])
    find(:xpath , '//*[@id="AddFavorites_UC1_AddFavoriteButton"]').click
  end
  puts "hgfhf"
end
  p $links
  p $links.length

当我执行此代码时,访问并单击工作一次,但for循环不会再次运行。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

一旦你转到另一个页面元素定位器变得无效,你就不能再使用它了。因此,您无法在其他页面使用sub_menus

因此你应该使用类似的东西:

links = all('li a').map { |el| el[:href] }
$links = []
links.each do |link|
  unless link !~ /http:\/\/intranet(.*)/
    visit link
    $links << link
  end
end