我已經看過一些涉及此主題的其他問題,但我沒有在任何地方看到這個問題。我有一個單擊Web元素的測試。我曾嘗試通過ID和XPath引用它,並使用wait.until()
等待它可見。隨機(?)ElementNotVisibleException
有時它似乎工作正常,但其他時間我得到ElementNotVisibleException
。 (其實,因爲我加了wait.until()
,所以我得到了TimeoutException
,但是如果我刪除了它,它會拋出ElementNotVisibleException
。)也就是說,我可以運行一次測試,它將能夠單擊該元素並繼續完成。其他時候,我得到了例外。問題不在於我是否得到一個例外,或者是另一個例外,問題是有時會得到例外,但其他時間可以毫無例外地引用元素。
我沒有做任何我知道的更改。該頁面似乎每次都可以快速正確加載。沒有我知道的服務器問題。大約有一半的時間拋出異常,另一半則可以毫無問題地引用該元素。
對於底層網站代碼而言,這可能是Selenium的問題嗎?我手動檢查了計算出的CSS值,它們似乎表明該元素應該可見。
好了TimeoutException異常的原因是因爲wait.until()函數拋出,因爲該元素不會成爲可見的,這就是爲什麼你看到一個或另一個。如果在頁面加載後您運行一個單獨的測試,以查看Selenium是否認爲元素可見,您會得到什麼? – 2013-03-15 21:14:06
我編輯了這個問題,以澄清我的問題是什麼。我會嘗試運行一個單獨的測試來深入瞭解Selenium的觀點是否可見 - 謝謝你的想法。 – aearon 2013-03-15 21:31:27
你確定每次元素都可見嗎? 您是否嘗試過以下兩種? wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); wait.until(ExpectedConditions.visibilityOf(element)); – 2013-03-20 19:24:55