2015-01-15 81 views
0

Watir Webdriver有沒有可用於等待新窗口選項卡加載的功能?等待窗口加載時不用等待存在的元素 - Watir Webdriver

現在發生的情況是,測試並沒有等待標籤頁加載,我的腳本也因此失敗。

我知道我可以等待網頁中的某些元素可用。但我不想爲每個網頁做到這一點。 如果沒有可用的方法,我想爲我的框架中的庫編寫一個新的方法。

我是watir webdriver和ruby編程的新手。所以請幫我寫一個庫函數,如果不可用...

+0

是這樣的Watir正在尋找的標籤被打開之前或(2)的Watir正在尋找被創建之前它是異步加載的元件的問題(1)? – 2015-01-15 16:14:18

+0

@JustinKo我正在觀察的是:測試不會等待頁面加載。是的,甚至在頁面加載之前,watir正在尋找一個元素。由於測試失敗,由於對象沒有找到或不可見或類似的東西。如果我在那裏添加一些隱含的等待,它可以正常工作。所以肯定有一些問題。 – Sukuva 2015-01-15 16:31:36

回答

1

我可能會誤解,但你的問題似乎說兩種不同的東西。一方面,你說Watir不會等待頁面加載。但後來你說你知道Watir 可以等待,但你不想在每一頁上這樣做。

根據我的經驗,我可能會誤解,如果Watir速度太快,頁面沒有加載,,您別無選擇,但要Watir等待任何頁面,這是一個問題。你還記得什麼?

如果您的頁面在30秒內加載,則可以使用.wait_until_present.when_present.(即Watir將在元素可用後立即移動,並在半分鐘後超時)。

例如,如果您加載頁面有文本「Hello」在div,可以使的Watir最多等待30秒,文本由

browser.div(:text, 'Hello').wait_until_present 

出現,然後讓你的測試挑放在離開的地方。

或者,如果有(作爲一個例子),ID爲「buttonId」你要點擊頁面加載時,你可以的Watir等待30秒,直到按鈕被加載並點擊一個button

browser.button(:id, 'buttonId').when_present.click 

對於每個新頁面加載,我幾乎總是使用.wait_until_present.when_present.。在正常情況下,30秒足以讓頁面準備好Watir,並且這兩種方法工作得很好。

參見http://watirwebdriver.com/waiting/

+0

我完全同意你提供的建議。我正在尋找的東西是這樣的.. .wait_for_page_load()應等待完整的頁面加載,而不是等待按鈕或元素... – Sukuva 2015-01-21 17:18:05

+0

我們可以檢查頁面的就緒狀態和狀態,以便我可以停止等待,一旦它變成4和200 ..?這是爲了等待頁面加載功能。 – Sukuva 2015-01-23 14:41:27

+0

我不認爲有可能用Watir-Webdriver檢查頁面狀態。請參閱http://stackoverflow.com/questions/6509628/webdriver-get-http-response-code/6512785#6512785。您可以調查添加頁面對象gem。我從來沒有使用它,但該寶石可能能夠檢查是否加載頁面。請參閱https://github.com/watir/watir-webdriver/wiki/Page-Objects。 – pjd 2015-01-24 06:28:19