1

我在 Firefox 中使用 selenium webdriver。

driver.navigate().back();

我浏览页面,当我浏览页面时,出现以下异常。在浏览器中,它说文档已过期。

org.openqa.selenium.StaleElementReferenceException:在缓存中找不到元素 - 页面可能在查找后已更改命令持续时间或超时:23 毫秒有关此错误的文档,请访问:http ://seleniumhq.org/exceptions /stale_element_reference.html 构建信息:版本:'2.21.0',修订:'16552',时间:'2012-04-11 19:09:00' 系统信息:os.name:'Windows 7',os.arch:'x86' , os.version: '6.1', java.version: '1.6.0_20' 驱动程序信息: driver.version: RemoteWebDriver at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java :39) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler. java:175) 在 org.openqa.selenium.remote.RemoteWebDriver 的 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:128)。在 org.openqa.selenium.remote.RemoteWebElement.getText(RemoteWebElement.java:141) 在 run.DriverImpl 在 org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:245) 处执行(RemoteWebDriver.java:459) .startScrapingFromThePage(DriverImpl.java:48) at ui.SAFSPUserInterface.startButtonClicked(SAFSPUserInterface.java:311) at ui.SAFSPUserInterface$1.actionPerformed(SAFSPUserInterface.java:62) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995 ) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 在 javax .swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 在 java。awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent (Container.java:2041) 在 java.awt.Component.dispatchEventImpl(Component.java:4630) 在 java.awt.Container.dispatchEventImpl(Container.java:2099) 在 java.awt.Component.dispatchEvent(Component.java: 4460) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 在 java. awt.Container.dispatchEventImpl(Container.java:2085) 在 java.awt.Window.dispatchEventImpl(Window.java:2478) 在 java.awt.Component.dispatchEvent(Component.java:4460) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:174) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java: 122)174) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:122)174) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

该页面包含 Ajax 和 javascript 调用。任何人都可以帮助我吗?

4

1 回答 1

2

首先,您粘贴的异常与向后导航无关。您有一个导致异常的陈旧元素的句柄。当您对页面中的 HTML 元素有 WebElement 引用时,会发生 StaleElementException,该 HTML 元素可能由于页面上的交互而被删除/丢失。所以你的 WebElement 是不存在的 DOM 元素的代理是无效的。

当导航回最初通过 POST 请求加载的页面时,webdriver中也存在这个已知问题。因此,您期望的页面可能尚未实际加载。解决firefox中回发警告的方法是重新发出navigation().back(),即回退两次。

于 2012-12-20T10:33:39.780 回答