selenium.common.exceptions.StaleElementReferenceException: Сообщение: устаревшая ссылка на элемент: элемент не прикреплен к странице - PullRequest
0 голосов
/ 19 апреля 2020
driver.get("https://www.zacks.com/")

driver.find_element_by_xpath("//*[@id='search-q']")

Я пытаюсь найти окно поиска на сайте Zacks с селеном, но я получаю StaleElementReferenceException

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Причина, по которой вы получаете эту ошибку, заключается в том, что элемент был удален из DOM. Для этого есть несколько причин:

  • Сама страница уничтожает / воссоздает элемент на лету, может быть, даже быстро.
  • Части страницы были обновлены (заменены), но у вас все еще есть старая ссылка.
  • Вы переходите на новую страницу, но сохраняете старую ссылку.

Чтобы избежать этого, старайтесь, чтобы ссылка на элемент была такой короткой, как возможный. Если содержимое быстро меняется, выполните операцию напрямую, без обратной связи с клиентом, через javascript:

driver.executeScript("document.getElementById('serach-q').click();");
0 голосов
/ 20 апреля 2020

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

WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...