2013-09-05 49 views
0

我正在使用driver.findelements(By.xpath(「// *));來檢索頁面上的所有元素,但是,在IE9/IE10上,我得到一個陳舊的元素異常。 ?請幫我使用Java,如何處理WebDriver中的「陳舊元素異常」?

錯誤列表如下:

Started InternetExplorerDriver server (32-bit) 
2.33.0.0 
Listening on port 40366 
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager). 
log4j:WARN Please initialize the log4j system properly. 
I am in IE 
Scanning Web objects....Please be patient 
org.openqa.selenium.StaleElementReferenceException: Element is no longer valid (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 15 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html 
Build info: version: '2.35.0', revision: '8df0c6b', time: '2013-08-12 15:43:19' 
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_25' 
Session ID: 750c270f-ce8d-4d46-b6fb-6944183dbbd9 
Driver info: org.openqa.selenium.ie.InternetExplorerDriver 
Capabilities [{platform=WINDOWS, elementScrollBehavior=0, javascriptEnabled=true, enablePersistentHover=true, ignoreZoomSetting=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=9, cssSelectorsEnabled=true, ignoreProtectedModeSettings=true, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=, nativeEvents=true, browserAttachTimeout=0, takesScreenshot=true}] 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:191) 
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) 
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554) 
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268) 
at org.openqa.selenium.remote.RemoteWebElement.getAttribute(RemoteWebElement.java:123) 
at com.util.browser.browser_type.getobjects(browser_type.java:225) 
at com.util.browser.browser.main(browser.java:57) 
--Arr SIze===>24 
+0

堆棧跟蹤根本不會幫助我們。當您對已更改的元素執行操作時發生陳舊元素異常,而不是在找到元素時發生。然而,那說...我不知道你爲什麼試圖找到頁面上的每個元素。 –

+0

你可以展示更多你的selenese嗎?相關的html?如果網頁在網上直播,即使是網址也會有所幫助。現在的問題,並沒有告訴我們很多。另外,您缺少一個引號來關閉「By」中的定位符「字符串」。 –

回答

0

因此,看起來,從堆棧跟蹤,你的驅動程序僅等待15MS這是太短嘗試:。

wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 

至少當你一個在IE上重新運行。這就是說,恐怕這個問題實際上是IE驅動程序構建方式的一個缺陷。看看這個線程:

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCsQFjAA&url=https%3A%2F%2Fgroups.google.com%2Fd%2Ftopic%2Fselenium-developers%2FuJ5z8aJ2X6Y&ei=RJSCUu_zPIWXiAKkuICYDg&usg=AFQjCNGjmmMjEqKa0bwLQZfLfuHIBXR-rQ&bvm=bv.56343320,d.cGE

,這和其他非常痛苦hackarounds這個問題...

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CDQQFjAB&url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F16166261%2Fselenium-webdriver-stale-element-reference-exception&ei=RJSCUu_zPIWXiAKkuICYDg&usg=AFQjCNEbFBbpDr0geAtA5rWiPvrCiNeUTg&bvm=bv.56343320,d.cGE

我懷疑是IE司機簡直是在支持。