Невозможно нажать на устаревший элемент, используя Selenium в Python
Я хотел бы предвосхитить этот вопрос, сказав, что я просмотрел все остальные вопросы по этой теме и попытался реализовать решения, но все еще не добился успеха. Я пытаюсь нажать кнопку "плюс" на экране рекомендаций на Quora:
Вот мой код:
def recommendations():
time.sleep(10)
requests = WebDriverWait(driver, 10).until(unhidden_elements_located((By.TAG_NAME, 'svg')))
for i in range(12):
try:
ActionChains(driver).click(requests[i]).perform()
except selexcep.StaleElementReferenceException as e:
print(e)
После ожидания загрузки страницы она получает список всех плюсовых элементов, затем просматривает их и пытается щелкнуть по ним. Я почти уверен, что он по-прежнему получает правильные элементы, так как этот код работал до тех пор, пока он случайно не начал получать это сообщение об ошибке:
Message: stale element reference: element is not attached to the page document
Я в полной растерянности, как решить эту проблему на данный момент.
2 ответа
попробуй это:
def recommendations():
time.sleep(10)
requests = WebDriverWait(driver, 10).until(unhidden_elements_located((By.TAG_NAME, 'svg')))
for i in range(12):
try:
ActionChains(driver).click(requests[i]).perform()
except selexcep.StaleElementReferenceException as e:
ActionChains(driver).click(WebDriverWait(driver, 10).until(unhidden_elements_located((By.TAG_NAME, 'svg')))[i]).perform()
Кажется, элемент не загружается должным образом после загрузки страницы. Определите свой элемент, как показано ниже.
search_input = lambda: driver.find_element_by_name('q')
Это потому, что вызов search_input() переоценивает лямбда-оператор и снова находит элемент. Это предотвращает устаревание, каждый раз получая свежую ссылку на WebElement.