您好,登錄后才能下訂單哦!
我在前面說過基于錄制、回放的web測試麻煩多多,經常是帶來的好處不如麻煩多。所以另尋他途。經過一番調研,覺得webdriver(也即selenium 2.0)前途較好,準備試用。webdriver支持多種語言,我們的項目是基于java編寫的,按說用java能夠更好的和項目集成。但考慮到剛開始用,快速上手很有必要,使用環境越輕量級越好。于是采用watir——Web Application Test In Ruby。我對ruby的了解僅限于聽說過這個名稱,好在網上有不少教程,而且快速展開測試也并不需要多深入的學習語言本身。使用ruby還有個好處就是它是一種解釋性語言,可以即時調試。
安裝沒什么難度(其實比網上的一些例子更容易,因為版本高了,很多工作不用準備了)
1.安裝ruby,最新2.1,我裝的是2.0。一路next完成。(devkit貌似不裝也可以)
2.gem update --system (不升級也可以,自帶的版本也夠)
3.gem install watir 以及gem install watir-webdriver (可以用gem list看一下,如果已經包括了,這步也省了)
4.如果需要用ie和chrome測試,那么下載這兩個的驅動:地址是,ie的:http://code.google.com/p/selenium/downloads/list chrome的:http://chromedriver.storage.googleapis.com/index.html
(關于chrome驅動得多說兩句——因為這個問題費了我十幾個小時的腦力。這個地址是我排查錯誤時找到的。網上大部分說法是在這里下http://code.google.com/p/chromedriver/downloads/list。但是這里搜到的最高版本才2.3,當chrome版本超過30,就不適用了。所以我用chrome測試失敗之后,嘗試很久才發現是驅動版本問題。驅動版本并非越高越好,要在上面我給出的地址里找到和chrome版本對應的驅動才行)
下面說說我在簡單試用中發現的問題和最后的解決辦法。
1.chrome驅動算一個,不重復了。
2.大多時候我們快速開始于一些簡單的例子。比如測試百度、google。因為這兩個頁面看上去似乎非常簡單,一個文本輸入框,一個檢索按鈕。然而,打開百度、google首頁的源代碼,我們發現,這些頁面內容遠比展現出來的復雜的多,頁面元素一層一層嵌套,想找個id和name都不容易。所以開始給我造成一些迷惑以至于讓我對webdriver頗為憂慮。
舉個例子,我用一段腳本在ie里執行沒問題,換到firefox就不行。讓我對使用watir進行瀏覽器兼容性測試沒了信心。如果換瀏覽器還要重新調試腳本的話,那么跟手工做沒太大區別了。后來經過仔細調試,發現是因為——ie驅動的容錯性更好導致的差別。具體來說,是頁面中有元素的name屬性重名,在ie里就正確識別出來了,而在firefox就報錯了。都改用id屬性就可以了,這樣腳本就通用了。
3.然而更詭異的事情繼續發生。一段腳本前一天執行還沒問題,后一天就不行了。或者換臺機器就不行了。這又是咋回事呢?經過排查,發現在百度和google首頁中元素的id、name是變化的——我現在還沒仔細驗證是根據訪問ip變化的還是根據訪問時段變化的。簡直是坑爹啊。好在測試自己的項目時不會發生這樣的事。所以網上大部分教程用百度、google首頁做例子并不適合,很容易調不通讓新手一頭霧水。
這樣一來,也給我們自己開發時提了個醒,頁面元素的id和name盡量唯一且固定。找到原因之后,我對watir有些信心了,在項目中準備正式用了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。