陈旧元素引用:揭示原因并寻找解决方案
在 Selenium 中,遇到“陈旧元素引用”异常可能会令人沮丧,因为它表明被引用的元素不再附加到页面文档。当 DOM 发生重大更改(例如动态加载或页面导航)时,通常会发生此错误。
要解决此问题,确定触发异常的确切代码行至关重要。在提供的代码中,导致错误的行似乎是:
<code class="java">driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();</code>
此行尝试单击基于格式化 XPath 字符串的元素。但是,在执行点击时,底层元素可能已经被删除或修改,从而导致陈旧元素引用异常。
这个问题的根本原因是代码执行时 DOM 不稳定。为了解决这个问题,可以考虑实现一种重试机制,等待元素再次可用后再单击它。以下是此类重试的示例:
<code class="java">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(); }</code>
通过在重试单击之前引入等待时间,代码为 DOM 提供了足够的时间来稳定并确保元素在继续之前存在且可单击。
以上是如何处理 Selenium 中的“过时元素引用”异常?的详细内容。更多信息请关注PHP中文网其他相关文章!