前言
最近在學習watir,一方面是老大布置給我的任務,另一方面我也對自動化測試很感興趣,作爲實習生能有這樣的學習機會還是要好好把握的。
這次的研究,是針對我們項目組快上線的項目,一個B/S系統。主要用C#.NET開發,所以ruby和watir的安裝環境都在windows。雖然watir是跨平臺的,但在配置環境的時候還是遇到了麻煩,可能由於公司的網絡限制,造成了gem無法在線安裝,只能本地安裝。另外,作爲新手的我使用Emacs還不太上手,所以目前需要一個IDE幫助我學習,老大給了我一個支持ruby的綠色版NetBeans,研究正式開始。
環境說明
操作系統:windows XP
ruby:1.8.7
Watir:1.6.5
瀏覽器:IE8
關鍵問題
watir的一些基本操作在這不一一詳解,我參考了watir對web的操作。在這總結一下研究過程中遇到的棘手問題。
(1)文本框輸入中文
在網上找了很多種方法,也試了很久,以下的方法我本人也驗證過,可以正常地輸入中文。
第一步:NetBeans->項目->屬性->編碼->將UTF8改爲GB2312
第二步:win32ole.rb文件->將“WIN32OLE.codepage=WIN32OLE::CP_UTF8”改爲“WIN32OLE.codepage=WIN32OLE::CP_ACP”
(2)定位frame
根據wiki.openqa.org的說法,在irb中利用ie.show_frames可以獲得該頁的frame數量和對應名稱,但是我試了之後,僅能得到frame的數量,不知道是版本問題還是缺少安裝了gem。
目前,我只能利用IE8中的開發人員工具找到所有的frame的名稱,再用ie.frame(:name,"frame")進行定位。
(3)識別PageTabList的<li>標籤
此類標籤我是利用XPath來進行識別的,具體地如下圖所示的html代碼:
目前,我們可以採用兩種方法,
a)ie.link(:xpath,"//li[3]").click
b)ie.element_by_xpath("li[contains(@id,'POType_200334')]/").click
疑難問題
(1)js中的showDialog和showModalDialog如何定位
例如上圖所示的彈出框目前我沒有找到辦法定位,已經嘗試過利用正則表達式匹配或是修改modal_dialog.rb文件等方法。
(2)td中的元素無法用xpath定位
若td中的元素無id、name可以幫助定位,目前沒有找到合適的方法。
參考資料
[1] watir的本地安裝過程
[2] watir對web的操作