2013-03-18 82 views
0

當我運行我的硒測試沒有turbolinks gem安裝在我的Ruby on Rails應用程序,測試通過。當我包括turbolinks時,測試失敗。例如,如果測試開始關閉使用Turbolinks與硒IDE

打開/
clickAndWait鏈接=登錄
類型ID = session_email [email protected]

然後,我會得到一個錯誤
「[錯誤]元素ID = session_email沒有找到。

當我看網頁的源文件,該session_email ID仍然存在安裝turbolinks。我找到了這個網頁,http://www.digitalkingdom.org/rlp/tiki-index.php?page=Selenium+And+Javascript,這似乎表明有可能是與檢測網頁完全加載的問題。

有沒有在我的測試套件中更改數百行來解決這個問題?如果沒有,是否有一個可靠的硒方法可以測試一個turbolinked頁面已完全加載?

回答

1

經過對github turbolinks-compatability project的一些幫助後,我能夠提供這個問題的部分答案。

如果正在使用turbolinks gem,那麼您需要修改硒測試用例以確保頁面真正加載。例如,如果您的測試中有

Open/
clickAndWait link=Sign in 
type id=session_email [email protected] 

下面的代碼則需要進行修改,以

Open/
click link=Sign in 
waitForElementPresent id=session_email 
type id=session_email [email protected] 

有很多,你可以使用「WAITFOR」修飾符,這取決於是什麼接下來要測試的頁面上的功能。

但是,如果測試涉及JavaScript彈出,那麼您不應該添加一個waitFor命令。因此,例如,如果你有像

clickAndWait link=Delete 
assertConfirmation Are you Sure? 

你不應該修改代碼。事實上,在javascript彈出窗口的情況下,添加waitFor測試會掛起執行。

此解決方案涉及逐行手動修改代碼。我在Selenium用戶組中打開了一個issue,看看是否有更好的方法來處理這個問題。