Ошибка Selenium «Элемент больше не привязан к DOM» при очистке данных

for i in driver.find_elements_by_class_name("endorse-count"): try: i.click() except: continue elem = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.CLASS_NAME, "dialog-window"))) src = elem.get_attribute("innerHTML") add_skill(name, src) WebDriverWait(driver, timeout=10) 

При выполнении приведенного выше кода возникает следующая ошибка:

 selenium.common.exceptions.StaleElementReferenceException: Message: u'Element is no longer attached to the DOM' ; Stacktrace: at fxdriver.cache.getElementAt (resource://fxdriver/modules/web_element_cache.js:7646) 

для линии –

 src = elem.get_attribute("innerHTML") 

Я запускаю этот код на странице профиля пользователя LinkedIn после входа в систему.

Я попытался поставить следующую строку кода после «i.click ()» –

 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

Но потом я вижу, что функция «add_skill (name, src)» не вызывается и ни один из кода после вызова driver.manage () не выполняется, хотя для цикла и далее i.click () работает нормально.

3 Solutions collect form web for “Ошибка Selenium «Элемент больше не привязан к DOM» при очистке данных”

Selenium пытается выполнить действия (например, нажать кнопку или ссылку), прежде чем проверять, что целевой элемент отобразился на странице. Селен может быть более терпеливым, но вы должны прямо спросить его.

Например, если вы тестируете что-то, что делает запрос AJAX, вы можете попробовать что-то вроде этого (в Ruby):

 # timeout is in seconds def wait_for_ajax(timeout=x) time_limit, interval = (Time.now + timeout), 0.5 loop do break if @driver.execute_script "return jQuery.active == 0" sleep interval raise "Wait for AJAX timed out after waiting for #{timeout} seconds" if Time.now > time_limit end end 

Чтобы ваши тесты были полностью полными, всегда делайте Selenium ожидающим загрузки элементов перед выполнением задачи.

Я столкнулся с подобной проблемой и попытался обновить страницу, прежде чем найти этот элемент, и он сработал …

 driver.navigate().refresh(); 

Хотя я не мог понять, как это сработало.

Если это сработает и для вас, пожалуйста, дайте мне знать. Я просто хочу узнать больше об этом исключении.

вы можете ссылаться на эту страницу, чтобы узнать о подобной проблеме

У меня была аналогичная проблема при попытке выполнить некоторый javascript (IJavaScripExecutor). Я создал IWebElement и передал это JSE, и это не помогло мне. Когда я переместил driver.FindElement (BySelector) в мой JSE-вызов, тогда он сработал. (Код C # впереди).

Вместо:

 IJavaScriptExecutor js = (IJavaScriptExecutor)driver; IWebElement tableEl = driver.FindElement(selector); js.ExecuteScript(script, tableEl); 

Я должен был сделать:

 IJavaScriptExecutor js = (IJavaScriptExecutor)driver; js.ExecuteScript(script, driver.FindElement(selector)); 

Возможно, вам придется сделать что-то подобное: переместите свой селектор или создание элемента в ту же строку, что и вы, что вы пытаетесь сделать. Или, может быть, в вашем случае:

 src = driver.find_element_by_class_name("dialog-window").get_attribute("innerHTML") 

При ближайшем рассмотрении, вот что выглядит вашей проблемой, есть старый объект веб-элемента, когда вы пытаетесь использовать метод get_attribute.

  • Как найти ввод текста по имени с помощью Selenium WebDriver?
  • Фильтрация HTML-элементов, которые имеют «display: none» либо как атрибут тега, либо в их CSS
  • Найти и щелкнуть элемент из частичного значения onclick
  • Получить версию браузера с помощью selenium webdriver
  • Селеновое тестирование без браузера
  • Ошибка selexbox при проверке на селене
  • Когда использовать явный wait vs implicit wait в Selenium Webdriver?
  • Получение Chrome для запуска через Selenium
  • Принудительное селение приостановить и ждать, пока поле будет доступно
  • Selenium Python Firefox webdriver: невозможно изменить профиль
  • Взаимодействие с всплывающими окнами с использованием селена в питоне
  •  
    Interesting Posts for Van-Lav

    Неустранимая ошибка Python при использовании динамической версии Python для выполнения встроенного кода python

    javascript HTML5 холст-дисплей с сервера python websocket

    ValueError: невозможно преобразовать строку в float: '1'

    GCM сервер Google, ответивший с помощью нулевого сообщения

    Как установить полное имя пользователя в поле foreignkey с помощью User Model с использованием атрибута on_delete?

    Логическое или Django для многих запросов возвращает повторяющиеся результаты

    Сохранение набора форм с выпадающим меню Foreignkey: IntegrityError XXX_id может не быть NULL

    Как остановить программу, когда в Python возникает исключение?

    как мне перехватывать команды, отправленные на pdb через gud?

    Встраивает ли c ++-код в python ваше приложение python быстрее?

    Время Python до возраста, часть 2: timezones

    Сделайте съемку страницы с помощью веб-драйвера Selenium

    Грокскинг Timsort

    Tensorflow: next_batch функция np массива

    Как сделать несколько аргументов для функции map, где один остается в python?

    Python - лучший язык программирования в мире.