Java Selenium StaleElementReferenceException。如何绕过它

Java Selenium StaleElementReferenceException。如何绕过它,java,selenium,Java,Selenium,我有带钮扣的桌子。表格的每行由3个按钮组成。我必须点击这3个页面中的一个,然后转到另一个页面查看更改。在我断言更改是好的之后,我想返回到那些按钮并将它们设置为初始状态。所以在列表中,我存储了这些按钮的初始状态。但当我转到另一页查看更改并返回以将这些按钮设置为初始状态时。我得到StaleElementReferenceException。我知道为什么,但即使我再次初始化元素,我也会得到相同的错误。我使用页面对象模式并以这种方式初始化元素PageFactory.initElements(新的Elem

我有带钮扣的桌子。表格的每行由3个按钮组成。我必须点击这3个页面中的一个,然后转到另一个页面查看更改。在我断言更改是好的之后,我想返回到那些按钮并将它们设置为初始状态。所以在列表中,我存储了这些按钮的初始状态。但当我转到另一页查看更改并返回以将这些按钮设置为初始状态时。我得到StaleElementReferenceException。我知道为什么,但即使我再次初始化元素,我也会得到相同的错误。我使用页面对象模式并以这种方式初始化元素
PageFactory.initElements(新的ElementDecorator(Driver.getInstance()),这是)

即使我放置Thread.sleep,然后初始化元素,我也会得到错误。

不要使用Thread.sleep,使用下面的方法,当找到元素时,该方法将返回boolean elementPresent为true,当元素由于某种原因丢失时(或者您的xpath可能不够好),该方法将返回false。Timeout是指在您可以说元素不存在之前等待的时间(即5将等待5秒,然后抛出element not found exception)

当您返回表时,另一个建议是在尝试查找任何元素之前刷新页面:

  driver.navigate().refresh();
可能重复的请阅读并提供您尝试过的代码和执行结果,包括任何错误消息等。还提供指向页面和/或相关HTML的链接。
  driver.navigate().refresh();