2013-03-15 86 views
1

我已經看過一些涉及此主題的其他問題,但我沒有在任何地方看到這個問題。我有一個單擊Web元素的測試。我曾嘗試通過ID和XPath引用它,並使用wait.until()等待它可見。隨機(?)ElementNotVisibleException

有時它似乎工作正常,但其他時間我得到ElementNotVisibleException。 (其實,因爲我加了wait.until(),所以我得到了TimeoutException,但是如果我刪除了它,它會拋出ElementNotVisibleException。)也就是說,我可以運行一次測試,它將能夠單擊該元素並繼續完成。其他時候,我得到了例外。問題不在於我是否得到一個例外,或者是另一個例外,問題是有時會得到例外,但其他時間可以毫無例外地引用元素。

我沒有做任何我知道的更改。該頁面似乎每次都可以快速正確加載。沒有我知道的服務器問題。大約有一半的時間拋出異常,另一半則可以毫無問題地引用該元素。

對於底層網站代碼而言,這可能是Selenium的問題嗎?我手動檢查了計算出的CSS值,它們似乎表明該元素應該可見。

+1

好了TimeoutException異常的原因是因爲wait.until()函數拋出,因爲該元素不會成爲可見的,這就是爲什麼你看到一個或另一個。如果在頁面加載後您運行一個單獨的測試,以查看Selenium是否認爲元素可見,您會得到什麼? – 2013-03-15 21:14:06

+0

我編輯了這個問題,以澄清我的問題是什麼。我會嘗試運行一個單獨的測試來深入瞭解Selenium的觀點是否可見 - 謝謝你的想法。 – aearon 2013-03-15 21:31:27

+0

你確定每次元素都可見嗎? 您是否嘗試過以下兩種? wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); wait.until(ExpectedConditions.visibilityOf(element)); – 2013-03-20 19:24:55

回答

-4

主要問題是加載頁面。如果頁面加載延遲,則在引發異常時找不到網頁元素。

要解決上述問題,使用

Thread.sleep(milliseconds); method. 
+0

有時可能會延遲,但我已經有一個WebDriverWait被設置爲等待6分鐘的元素。 – aearon 2013-03-16 16:05:06