当您尝试与之交互的元素被删除并动态重新创建时,会发生 Selenium WebDriver 的过时元素引用异常。这在元素不断修改的复杂 Web 应用程序中很常见。
了解元素刷新
WebElement 表示 DOM 中的元素。当底层元素被销毁然后重建时,会触发 StaleElementException。这种情况可能发生在需要 DOM 操作的用户交互过程中,导致原始 WebElement 变得“过时”。
解决过时元素引用的最佳实践
要避免此异常,您应该刷新对该元素的引用。以下是一些推荐的做法:
示例
考虑您提供的代码:
WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver driver) { WebElement button = driver.findElement(By.name("createForm:dateInput_input")); if (button.isDisplayed()) return true; else return false; } });
要解决此问题,您可以使用动态定位器而不是 By.name(),或者在遇到陈旧元素引用时实施适当的异常处理来刷新元素例外。
以上是如何处理 Selenium WebDriver 中的过时元素引用异常?的详细内容。更多信息请关注PHP中文网其他相关文章!