1. 程式人生 > >selenium webdriver (python)的基本用法一

selenium webdriver (python)的基本用法一

前言
對於大多軟體測試人員來講缺乏程式設計經驗(指專案開發經驗,大學的 C 語言算很基礎
的程式設計知識)一直是難以逾越的鴻溝,並不是說測試比開發人員智商低,是國內的大多測試
崗位是功能測試為主,在工作時間中,我們很難深入的接觸和使用程式設計技術;
筆者認為自動化測試儘管有很多不足,更不能完全替代手工測試,但確實是測試人員發
展的一個方向,越來越多的公司在實踐自動化,越來多的專案在嘗試自動化;所以對於功能
測試人員來講,掌握專案自動化測試技術自然能提高測試技術水平,能夠保持不被淘汰,又
能在激烈的競爭中處於優勢地位。
為什麼選 python,因為他語法簡單;如果你有一點 C 語言或 java 語言基礎的,將會非

常容易地學會並使用 python。自動化指令碼本身要比開發程式簡單得多,大多人學程式設計半途而
廢就是沒有實踐的機會;那麼通過 selenium webdriver python 進行自動化測試,很快就可以
學以致用,建立繼續學習的信心與動力;可以平滑的過渡到真正的程式設計經驗上。
如果要使用 java或 ruby 語言通過 selenium webdriver 來實施自動化測試,雖然各種語
言的語法有差別,但思路是相通的;相信本文件依然可以提供給你學習的思路。
繼續在這裡感謝:
感謝購買第二版的同學,謝謝你們對本人勞動成果的支援!也正是你們時常問我還出不
出第三版了,也是你們的鼓勵,讓我繼續學習整理本文件。

感謝乙醇前輩,第二版的文件是放在他的淘寶網站上賣的,感謝他的幫忙。
最最感謝的還是兔子(MarkRabbit ),好吧!他已經極力抗議叫兔子了,哈哈!本文
檔中相當多的知識點是他提供的,不過他只提供思路,不提供解決問題的具體程式碼;我需要
把他的話截圖下來,反覆理解,然後找具體的解決程式碼,因此,我 python 的語言能力提高
了不少。
下面要簡單說說本文件的內容:
《selenium webdriver python(第三版)》相比第二版增加測試套件,引數化問題,引入
HTMLTestRunner ,測試結構的調整,相對來說比較好的構建了測試結構(只能用是“結構”,
離“架構”還差得呢!)

本文件仍然有很多不足夠,畢竟不是以出書的標準來要求的,可能很多知識點解釋的不
透徹,甚至錯誤的地方,請提出你的意見給本人。
本文件不是 API,所以還有很多方法沒有整理,如果在學習的過程中有任何疑問,請查
閱線上 AIP 文件:
http://selenium.googlecode.com/git/docs/api/py/index.html
2013.10.31
部落格園 — 蟲師
http://fnng.cnblogs.com 3
目錄
一、selenium+python 環境搭建................................................................................................6
1.1 selenium 介紹............................................................................................................... 6
1.2 準備工作......................................................................................................................6
1.3 安裝步驟......................................................................................................................7
1.4 安裝chrome driver......................................................................................................8
1.5 安裝 IE driver................................................................................9
二、開始第一個指令碼.................................................................................................................9
2.1 為什麼選python..........................................................................................................9
2.2 第一個指令碼..................................................................................................................9
2.3 指令碼解析....................................................................................................................10
三、元素的定位.......................................................................................................................11
3.1 id 和 name 定位.......................................................................................................12
3.2 tagname 和 class name定位...................................................................................12
3.3 CSS 定位..................................................................................................................13
3.4 XPath 定位...............................................................................................................14
3.5 link 定位...................................................................................................................15
3.6 Partial link text 定位................................................................................................15
四、新增等待時間...................................................................................................................15
4.1、新增休眠..................................................................................................................15
4.2、智慧等待..................................................................................................................16
五、列印資訊...........................................................................................................................17
5.1、列印 tile....................................................................................................................17
5.2、列印 URL.................................................................................................................17
六、瀏覽器的操作...................................................................................................................18
6.1、瀏覽器最大化..........................................................................................................18
6.2、設定瀏覽器寬、高..................................................................................................19
七、操作瀏覽器的前進、後退...............................................................................................19
八、操作測試物件...................................................................................................................20
8.1、滑鼠點選與鍵盤輸入..............................................................................................21
8.2、submit 提交表單......................................................................................................21
8.3、text獲取元素文字...................................................................................................22
8.4、get_attribute 獲得屬性值........................................................................................ 22
九、鍵盤事件...........................................................................................................................23
9.1、鍵盤按鍵用法..........................................................................................................23
9.2、鍵盤組合鍵用法......................................................................................................24
9.3、中文亂碼問題..........................................................................................................25
十、滑鼠事件...........................................................................................................................25
10.1、滑鼠右鍵................................................................................................................26
部落格園 — 蟲師
http://fnng.cnblogs.com 4
10.2、滑鼠雙擊................................................................................................................27
10.3、滑鼠拖放................................................................................................................27
十一、定位一組元素...............................................................................................................28
11.1、第一種定位方法....................................................................................................30
11.2、第二種定位方法....................................................................................................31
11.3、去掉最後一個勾選................................................................................................31
十二、多層框架/視窗定位......................................................................................................32
12.1、多層框架定位........................................................................................................32
12.2、多層視窗定位........................................................................................................35
十三、層級定位.......................................................................................................................35
十四、上傳檔案操作...............................................................................................................38
14.1、操作檔案上傳例子................................................................................................39
14.2、139 郵箱上傳.........................................................................................................40
十五、下拉框處理...................................................................................................................41
15.1、操作下拉框例子....................................................................................................41
15.2、百度搜索設定下拉框操作....................................................................................43
十六、alert、confirm、prompt 的處理..................................................................................44
十七、對話方塊的處理...............................................................................................................45
17.1、div 對話方塊的處理..................................................................................................45
17.2、一般對話方塊的處理................................................................................................48
十八、呼叫 js...........................................................................................................................49
18.1、通過 js 隱藏元素...................................................................................................49
18.2、通過 js 使輸入框標紅...........................................................................................51
十九、控制瀏覽器滾動條.......................................................................................................52
19.1、場景一....................................................................................................................53
19.2、場景二....................................................................................................................53
二十、cookie 處理...................................................................................................................54
20.1、列印 cookie 資訊...................................................................................................54
20.2、對cookie 操作.......................................................................................................55
20.3、部落格園登陸分析cookie........................................................................................56
二十一、webdriver 原理解析................................................................................................. 57
二十二、引入 unittest 框架.....................................................................................................65
二十三、unittest 單元測試框架解析......................................................................................70
二十四、批量執行測試集.......................................................................................................75
二十五、異常捕捉與錯誤截圖...............................................................................................77
二十六、生成測試報告(HTMLTestRunner).......................................................................... 80
二十七、資料驅動測試...........................................................................................................83
27.1、讀取檔案引數化....................................................................................................83
27.2、使用者名稱密碼的引數化(讀取檔案)................................................................... 85
27.3、使用者名稱的引數化(字典)....................................................................................86
27.4、使用者名稱密碼的引數化(函式)........................................................................... 87
二十八、測試套件...................................................................................................................89
28.1、測試套件例項........................................................................................................89
28.2、整合 HTMLTestRunner 測試報告........................................................................93
部落格園 — 蟲師
http://fnng.cnblogs.com 5
28.3、更易讀的報告........................................................................................................95
二十九、結構改進...................................................................................................................96
29.1、all_tests.py 移出來................................................................................................96
29.2、__init__.py 檔案解析............................................................................................97
29.3、呼叫多級目錄的用例............................................................................................98
29.4、改進用例的讀取....................................................................................................99
29.5、進一步分離用例列表..........................................................................................101
三十、UliPad--python 開發利器...........................................................................................103
部落格園 — 蟲師
http://fnng.cnblogs.com 6
一、selenium+python  環境搭建
1.1selenium  介紹
selenium 是一個 web 的自動化測試工具,不少學習功能自動化的同學開始首選 selenium ,
相因為它相比 QTP有諸多有點:
* 免費,也不用再為破解 QTP 而大傷腦筋
* 小巧,對於不同的語言它只是一個包而已,而 QTP 需要下載安裝1個多 G 的程式。
* 這也是最重要的一點,不管你以前更熟悉 C、 java、ruby、python、或都是 C# ,你都
可以通過 selenium 完成自動化測試,而 QTP 只支援 VBS
* 支援多平臺:windows、linux、MAC ,支援多瀏覽器:ie、ff、safari、opera、chrome
* 支援分散式測試用例的執行,可以把測試用例分佈到不同的測試機器的執行,相當於分
發機的功能。
1.2  準備工作
搭建平臺 windows
準備工具如下:
-------------------------------------------------------------
下載 python
http://python.org/getit/
下載 setuptools 【python的基礎包工具】
http://pypi.python.org/pypi/setuptools
下載 pip 【python 的安裝包管理工具】
https://pypi.python.org/pypi/pip
-------------------------------------------------------------
因為版本都在更新,pyhton 選擇2.7.xx ,setuptools 選擇你平臺對應的版本,pip 不要
擔心 tar.gz 在 windows 下一樣可用。
部落格園 — 蟲師
http://fnng.cnblogs.com 7
1.3  安裝步驟
一、python 的安裝 ,這個不解釋,exe 檔案執行安裝即可,既然你選擇 python,相信
你是熟悉 python 的,我安裝目錄 C:\Python27
二、setuptools 的安裝也非常簡單,同樣是 exe 檔案,預設會找到 python 的安裝路徑,
將安裝到 C:\Python27\Lib\site-packages 目錄下
三、安裝 pip ,我預設解壓在了 C:\pip-1.3.1 目錄下
四、開啟命令提示符(開始---cmd 回車)進入 C:\pip-1.3.1目錄下輸入:
C:\pip-1.3.1 >python setup.pyinstall
(如果提示 python 不是內部或外部命令!別急,去配置一下環境變數吧)
修改我的電腦->屬性->高階->環境變數->系統變數中的 PATH 為:
變數名:PATH
變數值:;C:\Python27
五、再切換到 C:\Python27\Scripts 目錄下輸入:
C:\Python27\Scripts> easy_install pip
六、安裝 selenium,(下載地址: https://pypi.python.org/pypi/selenium )
如果是聯網狀態的話,可以直接在 C:\Python27\Scripts 下輸入命令安裝:
C:\Python27\Scripts> pip install -U selenium
如果沒聯網(這個一般不太可能),下載 selenium 2.33.0 (目前的最新版本)
並解壓把整個目錄放到 C:\Python27\Lib\site-packages 目錄下。
注意:七、八兩步可以暫不進行,如果你要學習第二十一章 webdriver 原理的時候再進行
也不遲。
==============
部落格園 — 蟲師
http://fnng.cnblogs.com 8
七、下載並安裝
(http://www.java.com/zh_CN/download/chrome.jsp?locale=zh_CN),什麼!?你沒整過
java 虛擬機器,百度一下 java 環境搭建吧。
八、下載 selenium 的服務端(https://code.google.com/p/selenium/)在頁面的左
側列表中找到
selenium-server-standalone-XXX.jar
對!就是這個東西,把它下載下來並解壓;
在 selenium-server-standalone-xxx.jar 目 錄 下 使 用 命 令 java -jar
selenium-server-standalone-xxx.jar 啟動(如果打不開,檢視是否埠被佔用:netstat
-aon|findstr 4444)。
==============
1.4  安裝 chrome driver
chrome driver 的下載地址在這裡。
1. 下載解壓,你會得到一個 chromedriver.exe 檔案(我點開,執行提示 started no prot
9515 ,這是幹嘛的?埠9515被佔了?中間折騰了半天),後來才知道需要把這傢伙放到