0

rediff.com を自動化しようとしていました。あるページから別のページに移動しましたが、戻ってきたときに staleException が発生しました。いろいろ試しましたが直りませんでした。コードスニペットも添付しています。どんな助けでも大歓迎です。

@driver.get " http://shopping.rediff.com/?sc_cid=inhome_icon "

@driver.manage.window.maximize

wait = Selenium::WebDriver::Wait.new(:timeout => 10) # 秒

始める

element = wait.until { @driver.find_element(:xpath,".//*[@id='popular_cat']") }

確認

box=@driver.find_element(:xpath,".//*[@id='popular_cat']")

リンクを終了=box.find_elements(:tag_name,"a")

puts "総リンク数:#{links.size}"

links.each do |i|

  puts "--------------------"
  puts "Value of all links is:#{i.text}"
  i.click
  puts "Title of page is :#{@driver.title}"
  @driver.get "http://shopping.rediff.com/?sc_cid=inhome_icon"
  box=@driver.find_element(:xpath,".//*[@id='popular_cat']")
  links=box.find_elements(:tag_name,"a")

end
4

1 に答える 1

1

ページをリロードするたびに (別のページに移動してから戻るため、または単純にページをリロードしたため)、リンク 'links=box.find_elements(:tag_name,"a")' への参照が失われます。

これを回避するために、いくつかの変更を提案します (最善の解決策ではない可能性があります)。

links = box.find_elements(:tag_name,"a").size links_counter = 0 while links_counter < links box = @driver.find_element(:xpath,".//*[@id='popular_cat']") current_link = box.find_elements(:tag_name,"a")[links_counter] links_counter += 1 puts "--------------------" puts "Value of all links is:#{current_link.text}" current_link.click puts "Title of page is :#{@driver.title}" @driver.get "http://shopping.rediff.com/?sc_cid=inhome_icon" end

これがお役に立てば幸いです。

ベスト、フェルナンド

于 2016-02-23T19:09:52.547 に答える