Selenium 中的 StaleElementReferenceException 是什么

问题描述 投票:0回答:1

当我尝试查找元素时,出现错误,如 StaleElementReference

使用 WebDriver 实例我尝试执行 driver.findelement(By.xpath(Element)) 它返回 staleelementreference 异常。我正在使用 selenium java

java eclipse selenium-webdriver webdriver staleelementreferenceexception
1个回答
0
投票

当您尝试使用

StaleElementReferenceException
element.getText()
等访问过时元素时,会引发
element.click()
。当您存储对页面上某个元素的引用,然后存储对页面上的某个部分的引用时,就会创建过时元素。包含该元素或整个页面更改/重新加载。最终结果是您在变量中保存的引用没有指向任何内容。如果您尝试在此时访问它,则会引发异常。

如何创建过时元素的简单示例,

// store a reference to an element
WebElement e = driver.findElement(By.id("id"));

// update the page by refreshing, creating the stale element
driver.navigate().refresh();

// accessing the stale element throws the exception
e.click();

避免此问题的最佳方法是了解并控制页面的状态。如果您执行更新页面的操作,请确保重新获取刷新页面之前存储的所有变量。

要修复我们的过时元素的简单示例,

// store a reference to an element
WebElement e = driver.findElement(By.id("id"));

// update the page by refreshing, creating the stale element
driver.navigate().refresh();

// refetch the element after the page refresh
e = driver.findElement(By.id("id"));

// accessing the stale element throws the exception
e.click();
© www.soinside.com 2019 - 2024. All rights reserved.