StaleElementReferenceError в рубиновом селене

Я пытался автоматизировать 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']")

end links=box.find_elements(:tag_name,"a")

ставит "Всего ссылок: # {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

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

Я надеюсь, это поможет вам!

Бест, Фернандо

Другие вопросы по тегам