2011-10-03 22 views
5

硒能夠臨時存儲數據項目,然後在隨後的測試中檢索它們。如何使用硒在測試之間存儲數值

storeText | @id='ctl00_ContentPlaceHolder1_FormView1' | someValue 

這適用於單個測試以及同一測試套件中的測試之間,當需要跨越測試邊界傳遞值時。不幸的是,它在測試套件之間不起作用(這是我們的應用程序的一項要求,其中包括許多引用同一對象的工作流程)。 Selenium如何用於在測試套件邊界上存儲值?

回答

4

可以使用JavaScript將來自Selenium Test的值存儲到瀏覽器的本地存儲中,例如,如果先前的值已經存儲到someValue中

getEval | this.browserbot.getUserWindow().localStorage.setItem("someValue",storedVars['someValue']) 
assertEval | this.browserbot.getUserWindow().localStorage.getItem("someValue") | ${someValue} 
storeEval | this.browserbot.getUserWindow().localStorage.getItem("assetLabel") | someValue 

在這種情況下,this.browserbot.getUserWindow()返回應用程序的窗口。這會將someValue存儲到本地存儲中,隨後可將其檢索回Selenium存儲變量。

+0

如果瀏覽器配置文件在測試套件之間重置將這項工作?或者你是否必須將Selenium設置爲使用靜態配置文件? – artbristol

+0

@artbristol:這取決於你的意思是「重置」。如果您告訴Firefox清除您的個人數據,那麼它將會丟失。但是Selenium IDE從來沒有這樣做,所以一般來說,它仍然會在那裏。 –

+0

@Ross但是,每次運行測試套件時,硒不會以全新的Firefox配置文件啓動?我會認爲本地存儲將無法生存。 – artbristol

0

您也可以在運行您的Selenium測試的代碼中實現持久性。如果你使用RC,這將是相當微不足道的。 (即,只是直接的數據庫查詢插入/更新,然後檢索)。

如果您使用的是Selenese並且無法訪問持久性API,您也可以啓動一個快速而髒的小網頁來將數據存儲在數據庫中,然後將其讀回以供後續測試運行。顯然這不是理想的,但它應該工作,如果你不能直接從你的測試訪問一個持久化存儲..

+0

謝謝,是的我確信有其他選擇,但這是專門的Selenium IDE,即它在Firefox中運行,用戶不是開發人員。使用本地存儲是解決其問題的簡單解決方案。 –