2016-08-20 43 views
1

我使用Java在Selenium上創建了一些測試用例。不幸的是,當我點擊頁面上的一個元素之前,我可以轉到任何其他操作,我必須等到頁面加載。當預期的元素存在時,Selenium立即停止頁面加載

我試過driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);。不幸的是,這會產生另一個問題即使頁面加載,它也會等待30秒纔會開始在頁面上進行測試。

我發現最好的方法是發送ESCAPE鍵來停止頁面加載。

是否有無論如何我可以檢查一個元素是否存在,當它發生時,發送ESCAPE鍵到瀏覽器停止頁面加載?

這部分是我的頭腦,因爲我必須等到頁面加載之前Java讀取代碼的下一行,所以我不能發送ESCAPE鍵到瀏覽器,直到頁面實際上停止加載。

編輯

我一直在使用一個新的線程來完成這項工作只是嘗試,但它似乎driver被完全鎖定了,不能做任何處理頁面停止加載之前。

我現在沒有想法,但我相信應該有辦法。

使用timeouts()導致整個測試案例停止。

回答

2

首先我想說這不是最佳做法。 selenium click方法指出,如果點擊觸發頁面加載,selenium將盡最大努力阻止頁面加載。您可以嘗試通過JavaScript發送點擊事件,而不是通過點擊方法進行點擊。然後等待正常的元素。

+0

我通常對新功能/網站進行這些測試。其中一些是全新的。有時候,我測試了100次以上的同一頁面(使用不同的條件)。不會通過JavaScript發送點擊事件會增加跳出率?如果是這樣的話,我不認爲每個人都會喜歡這個。 – Revenant

+0

您正在生產中運行測試?那麼是的,你必須與任何監測噪音的人分析。也可能希望瞭解有關使測試服務器運行測試以避免一般性破壞分析的問題 –

+0

這經常是我的擔憂。當我在測試/分級環境中進行測試時,我不介意這些問題。當它在生產環境中時,我只想盡快完成它。 – Revenant

1

您可以嘗試driver.manage()。timeouts()。pageLoadTimeout(10,TimeUnit.SECONDS);它應該在超時結束後引發錯誤。我從來沒有使用它,但也許你可以嘗試並捕獲這個錯誤,並繼續你的測試。但是,您的頁面最終會處於不穩定的狀態,並且所有內容都不會加載並且測試與元素進行交互。

+0

是的,它會拋出一個錯誤,然後它不能按預期完全發揮作用。更不用說,如果在10秒之內,元素不存在,這會產生另一個級別的問題。 這就是爲什麼我要等到元素存在的原因,一旦發生,通過發送'ESCAPE'鍵停止頁面加載。 這就是爲什麼我不能使用'pageLoadTimeout'我也試過了。 – Revenant

+0

什麼是需要時間來加載?圖片?具體看看這個問題@kyrenia的答案。這是爲Firefox雖然,http://stackoverflow.com/questions/7157994/do-not-want-images-to-load-and-css-to-render-on-firefox-in-selenium-webdriver-te – Grasshopper

+0

感謝您的鏈接,對於某些情況確實有用。它依賴於頁面,有時是CSS,圖像,js ...外部資源......真的有機會不提及我可能至少在大多數情況下需要這些資源。 – Revenant

相關問題