Задать вопрос
@Pompeius_Magnus
Студент

Почему вываливается StaleElementReferenceException?

Добрый день!

Есть несколько тестов к одной форме, которые используют следующий код:

def select_drop_down(context, text, id):
WebDriverWait(context.browser, TIME_FOR_WAIT).until(
    EC.element_to_be_clickable((By.XPATH, '//div[@id = "%s"]/a' % id))
)
element = context.browser.find_element_by_xpath('//div[@id = "%s"]/a' % id)
scroll_element_into_view(context.browser, element)
context.browser.find_element_by_xpath('//div[@id = "%s"]/a' % id).click()
WebDriverWait(context.browser, TIME_FOR_WAIT).until(
    EC.presence_of_element_located((By.XPATH, "//*[@id='select2-drop']/div/input"))
)
context.browser.find_element_by_xpath("//*[@id='select2-drop']/div/input").send_keys(text)
WebDriverWait(context.browser, TIME_FOR_WAIT).until(
    EC.visibility_of_element_located((By.XPATH, '//*/li//*[contains(text(), "%s")]' % text))
)
context.browser.find_element_by_xpath('//*/li//*[contains(text(), "%s")]' % text).click()

Код выбирает элемент из выпадающего списка.
В некоторых тестах работает, в некоторых нет.
При этом если запустить тесты в которых код не работает отдельно -- тесты проходят.

Проблемное место:
context.browser.find_element_by_xpath("//*[@id='select2-drop']/div/input").send_keys(text)
WebDriverWait(context.browser, TIME_FOR_WAIT).until(
EC.visibility_of_element_located((By.XPATH, '//*/li//*[contains(text(), "%s")]' % text))


В этом месте иногда вываливается ошибка -- StaleElementReferenceException: Message: Element not found in the cache.

Почему это может происходить?
Спасибо.

P.S. Используется firefox 24
  • Вопрос задан
  • 433 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Talik0507
Работаю, Живу
могу только предположить, в момент ожидания видимости (By.XPATH, '//*/li//*[contains(text(), "%s")]' % text) сам элемент меняется, потому однажды найденный элемент протухает. Соответственно, при очередной проверке видимости вебдрайвер просто уже не находит елемента по найденной ранее ссылке на объект
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
Wanted. Москва
До 250 000 ₽
AST Москва
До 350 000 ₽
14 янв. 2025, в 14:39
20000 руб./за проект
14 янв. 2025, в 13:32
4000 руб./за проект
14 янв. 2025, в 13:29
5000 руб./за проект