Strona zawiera niektóre dane (tabela z kilkoma wierszami). Jest przycisk "odśwież", który przeładowuje i przerysowuje niektóre elementy na stronie bez przeładowywania danych statycznych (ajax).selenium.common.exceptions.StaleElementReferenceException podczas odświeżania strony
Próbuję utworzyć poprawny test dla tej strony, ale czasami pojawia się wyjątek StaleElementReferenceException.
Mój kod (Python):
from selenium import webdriver
browser=webdriver.Firefox()
browser.get('http://mytisite')
browser.implicitly_wait(10)
browser.find_element_by_id('start').click()
while browser.find_element_by_id('status').text!='Done':
browser.find_element_by_id('refresh').click()
for row in browser.find_elements_by_class_name('datarow'):
if not is_correct(row.text):
print "incorrect"
time.sleep(10)
1 5 iteracjach nie on line "jeśli nie is_correct (row.text)":
selenium.common.exceptions.StaleElementReferenceException:
Message: u'Element not found in the cache - perhaps the page
has changed since it was looked up' ; Stacktrace: Method
fxdriver.cache.getElementAt threw an error in
resource://fxdriver/modules/web_element_cache.js
Głównym problemem: strona zawiera już poprzednie dane , więc dostaję wyścig pomiędzy odświeżeniem ajaxowym a zapytaniem o element webdrivera pod numerem find_elements_by_class_name('datarow')
.
Jak mogę poprawnie rozwiązać wyścig między odświeżaniem ajax a webdriverem? Dzięki.
Rozumiem ogólny pomysł na Stale problem, ale chcę znaleźć dobry sposób na uniknięcie tego, bez niekończącego się "try/except". –
Spróbuj użyć innego rodzaju lokalizatorów. – Hemanth