Справочник по устаревшим элементам: раскрытие причины и поиск решения
В Selenium обнаружение исключения «устаревшая ссылка на элемент» может расстраивать, поскольку это указывает на то, что элемент, на который имеется ссылка, больше не прикреплен к документу страницы. Эта ошибка часто возникает, когда в DOM были внесены существенные изменения, например динамическая загрузка или навигация по страницам.
Чтобы решить эту проблему, крайне важно определить точную строку кода, которая вызывает исключение. В предоставленном коде строка, ответственная за ошибку, выглядит так:
driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
Эта строка пытается щелкнуть элемент на основе отформатированной строки XPath. Однако базовый элемент мог быть удален или изменен к моменту выполнения щелчка, что привело к исключению ссылки на устаревший элемент.
Основная причина этой проблемы заключается в том, что DOM нестабилен во время выполнения кода. . Чтобы решить эту проблему, можно рассмотреть возможность реализации механизма повтора, который ожидает, пока элемент снова станет доступным, прежде чем щелкнуть по нему. Вот пример такой повторной попытки:
try {
// Attempt to click on the element
driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
} catch (org.openqa.selenium.StaleElementReferenceException ex) {
// Element is not yet available, so wait and try again
Thread.sleep(200); // Replace with appropriate wait time
driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
}
Вводя время ожидания перед повторной попыткой щелчка, код дает DOM достаточно времени для стабилизации и гарантирует, что элемент присутствует и доступен для клика, прежде чем продолжить.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3