1. 程式人生 > >RFS的web自動化驗收測試——Selenium2Library升級指南(補充一個問題)

RFS的web自動化驗收測試——Selenium2Library升級指南(補充一個問題)

引言:什麼是RFS——RobotFramework+Selenium2library,本系列主要介紹web自動化驗收測試方面。

我搞了個RobotFramework自動化測試公眾號

歡迎大家掃一下加入。

這裡有最新的安裝指南,本文裡的版本都比較舊了。

==2013年9月15日補充更新==

官方最近更新很快啊,已經release了1.4.0版本了,不過從1.2.0開始官方沒有做exe包了,本身我也覺得exe沒啥用,還是用原始碼安裝比較好。現在官網github上,要點release的連結就能看到釋出的版本了。 如果是首次使用RF在IE瀏覽器上測試的同學,務必檢查以下幾個設定: 1、IE選項設定的安全頁中,4個區域的啟用保護模式的勾選都去掉(或都勾上)
2、IE選項設定的連線頁中,區域網設定裡的代理伺服器設定,不能勾選。如果需要配置代理,請使用上面的pac自動配置指令碼來使用代理。 3、IE頁面的顯示比例要為100% 4、下載IEDriverServer.exe檔案,放到環境變數path路徑的目錄裡或把他所在的目錄加到path環境變數中。下載地址為:http://code.google.com/p/selenium/downloads/list

==2013年9月3日補充更新==

目前release的最新版本Selenium2library是1.1.0,下面的一些問題已經基本解決。1.2.0已經有部分更新了,但是還沒有release。
Selenium2library的依賴庫可以根據自己的情況在安裝時自動下載,或者自己單獨下載各個依賴庫,下面這個只是依賴庫的最低版本,實際版本都比較新了,用最新的就好了。想了解一些具體情況的可以看看舊版內容

decorator >= 3.3.2
selenium >= 2.12.0
robotframework >= 2.6.0
docutils >= 0.8.1

另外本升級指南後續將不再置頂,具體取消置頂日期待定,取消置頂後將換成RF常見問題指引,我會將平常自己遇到和大家遇到的問題都整理一下,方便以後遇到類似問題的同學檢視。

==以下都是舊版內容,僅供參考==

之前一直使用Selenium2Library的0.5.2版本,現在官方推出了1.0.0版本,本人在升級過程中遇到了很多的問題,於是痛下決心要搞定他,終於搞了幾天摸清楚了根本問題,解決了升級後無法載入的問題。

補充一個問題:1.0.0版本的select window在處理模態對話方塊的時候無法起作用。。。

解決辦法(感謝FIGESZ和吳穹博士的指導):

修改webdrivermonkeypatches.py檔案中的:

#atts = self.execute_script("return [ window.id, window.name, document.title, document.location ];")
atts = self.execute_script("return [ window.id, window.name, document.title, document.url ];")

吳博對此的解讀是S2L1.0.0是基於FF的,在IE的處理上這裡就算一個bug了。所以其實吳博在給我們的0.5.2版本里也做了同樣的修改的。

我這裡先給出解決方案吧,有興趣的同志們可以看看另一篇的解決過程。

==解決方案==

1、針對已經安裝0.5.2版本的朋友,把python27\Lib\site-packages目錄下的Selenium2Library目錄刪除,然後繼續第2步。如果沒有安裝過,請從第2步開始。

(其實不刪除應該也是可以的,因為1.0.0用了easy_install)

注意下載的時候選擇ZIP下載,不要去下Download裡面的,那裡面都是坑爹的生氣。。。

(2012-9-13補充:現在應該是1.0.1了,其實download裡也有可以用的,就是原始碼包,而不是exe的)

另外,注意到ZIP左下方的branch了麼?這個是master,他的主分支,如果你需要iframe支援的話,建議選擇branch下面的iframe分支,選擇之後也是點ZIP來下載。

總之就是下面這2個檔案了,選擇你想安裝的進行解壓縮。(區別就是master的對iframe不支援,只支援frame,當然,你也可以自己來修改成支援的,或者使用iframe分支)

3、接下來是一個特殊選擇:

如果你的電腦可以正常連線外網——我指的是這些python和selenium的官方網站——那你完成這步就可以了大笑

如果是公司區域網無法訪問外網,那麼就請跳過此步,直接看第4步了微笑

如果你不確定是否能聯網,那麼在執行install有報錯說無法獲取url的那就是你沒法訪問了,也請看第4步快哭了

把你需要的那個版本的ZIP檔案解壓縮後,到命令列進入解壓的目錄,執行python setup.py install即可。他會聯網下載缺少的內容。

首先會下載setuptools-0.6c11-py2.7.egg,他是後面一切安裝的基礎。(如果這個無法下載或者有問題,可以去下載一下setuptools的exe單獨安裝一下)

setuptools安裝成功之後會下載4個依賴庫,在src目錄下的egg.info目錄裡,有一個requires.txt裡面有如下內容

decorator >= 3.3.2
selenium >= 2.8.1
robotframework == 2.6.3——注:因為我本機已經安裝RF,所以他不再下載
docutils >= 0.8.1

他會自動匹配最合適的版本進行下載,最終完成後,你可以在python27\Lib\site-packages目錄下找到相關的目錄,都是.egg結尾的目錄。

除此以外還安裝了一些小的檔案,我會在解決過程篇列出。

如果安裝完成後在RIDE中載入Selenium2Library後按F5還是沒看到他被載入進來的話,請看第5步。

最近經常有人問我RIDE安裝完成之後開啟按F5看不到Selenium2Library,請注意我的原話是在RIDE中載入Selenium2Library後(而不是單純開啟RIDE就去按F5)。

那麼載入的意思簡單說就是在Test Suite裡使用Add Library,然後輸入Selenium2Library,把他載入到這個Test Suite裡之後,再按F5檢視。可能我的描述讓大家出現了困擾,非常抱歉。

如果不清楚上述動作的童鞋可以看一下我的這篇文章,裡面有介紹如何新增Library,當然最好從頭看比較好。

4、針對公司區域網無法從外網下載檔案的方法。

其實很簡單的,把那些egg檔案和目錄在家裡下載下來,拷貝或者發到公司裡吧。

如果你的公司區域網又不能訪問外網,又不能從外面拷貝或者傳送檔案進來,那麼我只能說悲催的孩子委屈,我也沒辦法處理這個純斷網環境了。

如果有條件的可以在自己家裡把上面的4個檔案,都是egg結尾的檔案和目錄拷貝過去(圖中Selenium的不用拷貝,pth的不用拷貝),這裡老道長也提供一個已經打好壓縮包的,和我說的4個是一致的:

下載下來之後,將裡面的所有.egg(檔案和目錄)都放入你解壓縮的Selenium2Library1.0.0的原始碼目錄內,和setup.py同一級即可。

然後執行python setup.py install就可以了。

5、檢查是否載入測試庫。

如果碰到無法載入的情況,請看一下site-packages目錄內的easy-install.pth檔案(就是我剛才圖裡特意加加進來的那個檔案大笑)的內容,用UE或者其他文字工具開啟吧。

記事本不太好看,他沒有自動換行。

如果看到 ./ 開頭的和我這個基本一樣就可以了,順序無所謂。

import sys; sys.__plen = len(sys.path)
./setuptools-0.6c11-py2.7.egg
./robotframework_selenium2library-1.0.0-py2.7.egg
./docutils-0.9-py2.7.egg
./selenium-2.21.3-py2.7.egg
./decorator-3.3.3-py2.7.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)


這上面最後2個就是Selenium2Library的最主要依賴的庫了,之前在公司裡安裝不成功主要是無法下載,同時又缺少這幾個egg支援。

如果你的不全,看看缺哪個,可以重複第4步,也可以單獨安裝缺的那個蛋(egg)。

補充單獨安裝的辦法:

首先確保setuptools是安裝成功的,基本上按第3或4步做了的都會安裝成功,安裝成功的同時會在python27\Scripts目錄下安裝一些easy_install的檔案。

我們就在命令列進入該目錄,輸入命令  easy_install egg的目錄或檔案的路徑 就會安裝成功了。

總結,最新的1.0.0主要採用了easy-install的安裝,通過安裝egg形式的蛋來安裝python的模組或測試庫,而在RIDE里加載Library的時候也會先看easy-install.pth有哪些egg,然後會把他裡面的測試庫載入進來的。

希望以上內容對大家有所幫助,如有問題歡迎隨時在新浪微博 @齊濤-道長  聯絡我~~~