”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何处理 Selenium 中的“过时元素引用”异常?

如何处理 Selenium 中的“过时元素引用”异常?

发布于2024-11-09
浏览:108

How to Handle

陈旧元素引用:揭示原因并寻找解决方案

在 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