当我尝试查找元素时,出现错误,如 StaleElementReference
使用 WebDriver 实例我尝试执行 driver.findelement(By.xpath(Element)) 它返回 staleelementreference 异常。我正在使用 selenium java
当您尝试使用
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();