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
Я надеюсь, это поможет вам!
Бест, Фернандо