2009-08-28 90 views
0

當我在selenium模式下使用webrat時,visit快速返回,如預期的那樣。沒問題。如何讓webrat/selenium「等待」加載頁面的CSS?

我想斷言我的樣式正確應用(通過查看不同元素上的背景圖像)。我可以通過JS獲得這些信息,但似乎樣式表在我的測試過程中沒有加載和/或得到應用。

我看到您可以「等待」元素出現,但我看不到我如何等待所有樣式被應用。我可以拖延一段時間,但這似乎是內置的片狀或緩慢,我試圖避免。

很明顯,因爲我知道我在找什麼樣式,所以我可以等他們出現。我會寫一個這樣的幫手,但我認爲可能會有一個更爲普遍的機制,我還沒有看到。

有沒有一種簡單的方法檢測到頁面確實真的「準備好」?

回答

2

這很奇怪。我知道wait_for_page_to_load等待整個頁面,包括樣式表。

如果您仍然認爲它並未等到它應該,您可以使用wait_for_condition這將執行一個JavaScript並等待,直到返回true。這裏有一個例子:

@selenium.wait_for_condition "selenium.browserbot.getCurrentWindow().document.body.style.backgroundColor == 'white'", "60000" 
+0

謝謝。這可能會做到這一點。我們遇到各種問題,實際上是提取元素的當前背景圖像。實際上,我們無法模擬「懸停」,因此CSS:懸停選擇器將工作,並最終使用JS來更改樣式 - 以便在硒內可靠地檢測到更改。 – ndp 2009-08-29 22:26:13

0

我們就遇到了這個時候被報告頁面加載即使冷聚變部分還在訪問用於信息顯示的數據庫。隨後的處理過早發生。

查看Selenium API中的抽象Wait類。你可以編寫你自己定製的until()子句,它可以測試出現的某些文本,消失的文本(在加載完成時消失的浮動消息)或者任何其他可以測試的事件硒的劇目。該API頁面甚至有一個很好的例子,可以幫助很多人建立起來。