2009-11-30 113 views
3

根據用戶在應用程序上的操作方式和時間,我的應用程序在JavaScript中進行了大量計算。該項目打印出有價值的信息(通過控制檯調用),以便計算如何進行,因此我們可以輕鬆發現任何NaN的匍匐之處。與Selenium(RC)的Javascript通信

我們計劃集成Selenium(RC與Python)來測試或項目,但如果我們可以在python測試用例中獲得控制檯輸出消息,我們可以識別任何NaN或甚至任何錯誤計算。

那麼,Selenium是否可以吸收這些輸出(最好在無控制檯的環境中)?

如果沒有,我想知道我是否可以轉移控制檯調用,可能是通過將console變量重新綁定到其他東西,以便硒可以獲得該輸出並通知python方。或者,如果不是控制檯,是否有其他方式可以實現這一點。

我知道硒有像waitForElementPresent等命令,但我不想在應用程序上顯示這些中間計算,或者它是唯一的方法嗎?

任何幫助表示讚賞。

謝謝。

回答

4

有GetEval()調用,它將JavaScript調用的結果返回給頁面。如果你有JavaScript的網頁上,那麼你可以這樣做

self.assertEqual(selenium.GetEval("this.browserbot.getUserWindow().functionUnderTest().isNaN();"),"false","There was a NaN detected") 

的browserbot訪問權限可以調用頁面上的JavaScript函數和得到的結果。如果你得到一個體面的結果,isNaN()將返回false

+0

感謝您的回覆,我檢查了'getEval'的文檔。這非常有幫助。那麼,我不能使用分散在應用程序中的控制檯調用打印出來的所有東西? – 2009-11-30 14:34:19

+0

由於不同的瀏覽器對它的反應方式,在你的JavaScript代碼中調用控制檯被認爲是不好的做法。 http://stackoverflow.com/questions/915385/javascript-best-practice-handling-firebug-specific-code – AutomatedTester 2009-11-30 15:12:39

+0

您可以將所有信息保存在document.window內的數組中,然後使用getEval和getUserWindow檢索所有這些信息( ) – Santi 2009-12-01 00:21:07

1

如果你純粹測試JavaScript函數執行給定輸入的正確計算,我會建議從你的頁面分離你的JavaScript並使用JavaScript測試框架來測試功能。使用Selenium測試低級代碼是很多不必要的開銷。如果你違背完整渲染的頁面,這將需要你的應用程序運行到服務器,這不應該是測試原始JavaScript的依賴。

我們最近從使用jsUnit轉換我們的應用程序使用YUI測試,它迄今爲止一直很有希望。我們在不到三分鐘的時間內在FireFox和IE中運行了大約150次測試。我們的測試仍然不理想 - 我們仍然使用Selenium測試很多JavaScript。但是,將一些UI測試移動到YUI Test爲我們在持續集成環境中節省了大量時間。

+0

感謝您的回覆,我一定會檢查YUI。 – 2009-12-15 04:32:43