Невозможно нажать на устаревший элемент, используя 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.

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