陈旧元素引用:揭示原因并寻找解决方案
在 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