在selenium webdriver中导航时,Firefox浏览器无法恢复页面

时间:2012-09-24 06:03:10

标签: java selenium-webdriver

我在Firefox上使用selenium webdriver。

driver.navigate()背面();

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

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)     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)     在org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:175)     在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:128)     在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:459)     在org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:245)     在org.openqa.selenium.remote.RemoteWebElement.getText(RemoteWebElement.java:141)     at run.DriverImpl.startScrapingFromThePage(DriverImpl.java:48)     at ui.SAFSPUserInterface.startButtonClicked(SAFSPUserInterface.java:311)     at ui.SAFSPUserInterface $ 1.actionPerformed(SAFSPUserInterface.java:62)     在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)     at java.awt.Component.processMouseEvent(Component.java:6263)     在javax.swing.JComponent.processMouseEvent(JComponent.java:3267)     at java.awt.Component.processEvent(Component.java:6028)     at java.awt.Container.processEvent(Container.java:2041)     at java.awt.Component.dispatchEventImpl(Component.java:4630)     at java.awt.Container.dispatchEventImpl(Container.java:2099)     at java.awt.Component.dispatchEvent(Component.java:4460)     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)     at java.awt.Container.dispatchEventImpl(Container.java:2085)     at java.awt.Window.dispatchEventImpl(Window.java:2478)     at java.awt.Component.dispatchEvent(Component.java:4460)     at 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)     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)     在java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

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

1 个答案:

答案 0 :(得分:2)

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

当导航回到最初通过POST请求加载的页面时,webdriver中还有这个known issue。所以你期望的页面可能没有实际加载。在firefox中回发警告的意思是重新发出navigate()。back(),即退出两次。