首页  >  文章  >  Java  >  如何处理 Selenium 中的“过时元素引用”异常?

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

Barbara Streisand
Barbara Streisand原创
2024-11-04 17:16:01549浏览

How to Handle

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

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn