0

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

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 循环不会第二次运行。

有什么建议么 ?

4

1 回答 1

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
于 2013-02-27T08:40:15.343 回答