Selenium WebDriver 中的陈旧元素引用异常:故障排除和解决方案
当先前获取的 WebElement 引用无效时,会发生 Selenium WebDriver 的陈旧元素引用异常由于底层 DOM 的变化。当动态更新或删除元素,导致现有引用过时时,就会出现此问题。
异常原因
异常可能发生在以下情况:
示例代码和异常详细信息
提供的代码片段在元素识别期间遇到异常,因为对话框打开和关闭时 DOM 发生变化:
WebElement textElement = driver.findElement(By.name("createForm:dateInput_input"));
错误跟踪显示以下消息:
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
解决方案:刷新 WebElement 引用
要解决此问题,您需要在任何可能使其无效的 DOM 更改后刷新 WebElement 引用。常用的解决方案包括:
WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("createForm:dateInput_input")));
WebElement textElement = (WebElement) ((JavascriptExecutor) driver) .executeScript("return document.querySelector('input[name=\"createForm:dateInput_input\"]')");
其他提示
以上是如何解决 Selenium WebDriver 中的陈旧元素引用异常?的详细内容。更多信息请关注PHP中文网其他相关文章!