我们有一个带有页面对象和页面工厂设计模式的 UI 框架。在我的一个页面对象类中,我定义了一个 web 元素并调用它。在我的测试步骤类中,当它在一个页面上时,我调用了这个 webelement 一次,当它在另一个页面上时,我再次调用了这个 webelement。下面是我的代码的样子
页面对象类 1:
@FindBy(how=How.XPATH, using="//*[contains(text(),'Successfully')]")
@CacheLookup
public WebElement successMsg;
测试步骤类:
//on first page
PageObjectClass1.successMsg.isDisplayed()
//Then I navigate to some other page and again call this webelement
PageObjectClass1.successMsg.isDisplayed();
在 webdriver 周围第二次调用它时给了我 staleElementException。此 xpath 是通用 xpath,将在每个页面中使用。这肯定存在于 DOM 中,所以不确定它为什么会给我这个异常?如何在不在每个页面对象类中创建此 web 元素的情况下使用它?
给出的例外是:
org.openqa.selenium.StaleElementReferenceException:过时的元素引用:元素未附加到页面文档