我有一个代码,它试图访问几个网页并将它们添加到收藏夹。正如我所说,一旦你使用访问,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循环不会再次运行。
有什么建议吗?
答案 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