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: sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) の RemoteWebDriver at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java) :39) org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler. java:175) org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:128) で org.openqa.selenium.remote.RemoteWebDriver で。org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:245) で execute(RemoteWebDriver.java:459) org.openqa.selenium.remote.RemoteWebElement.getText(RemoteWebElement.java:141) で run.DriverImpl .startScrapingFromThePage(DriverImpl.java:48) で ui.SAFSPUserInterface.startButtonClicked(SAFSPUserInterface.java:311) で 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 java.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)javax.swing.JComponent.processMouseEvent(JComponent.java:3267) の awt.Component.processMouseEvent(Component.java:6263) java.awt.Container.processEvent の java.awt.Component.processEvent(Component.java:6028) (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) で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) で java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) で java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) で 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

まず、貼り付けた例外は、戻ることとは関係ありません。例外の原因となっている古い要素へのハンドルがあります。StaleElementException は、ページ上での操作によって削除または失われた可能性があるページ内の HTML 要素への WebElement 参照がある場合に発生します。したがって、存在しない DOM 要素へのプロキシである WebElement は無効です。

POST 要求によって最初にロードされたページに戻るときに、webdriver にもこの既知の問題があります。そのため、期待しているページが実際には読み込まれていない可能性があります。firefox でのポストバック警告に対する解決策は、navigate().back() を再発行することです。つまり、2 回バックアウトします。

于 2012-12-20T10:33:39.780 に答える