什么是webdriver?
webdriver是一個web自動化測試框架,不同於selenium IDE只能運行在firefox上,webdriver能夠在不同的瀏覽器上執行你的web測試用例。其支持的瀏覽器有:Firefox、Chrome、IE、Edge、Safari、Opera、phantomjs等等。
webdriver支持使用不同的編程語言來寫測試腳本,這是selenium IDE所無法做到的。對於測試人員來說至少具備:
- 掌握編程語言的判斷分支語法
- 掌握基本的循環語法
webdriver支持的編程語言有:
- java
- .net
- php
- python
- perl
- ruby
在本系列教程中,我們將使用python來寫webdriver測試腳本。如果你對python的基本語法不夠熟悉的話,請先參照《python簡明教程》學習(建議兩個小時內完成學習)。
Selenium RC和webdriver的區別
在webdriver發布前selenium1.0版本叫做selenium remote control,簡稱Selenium RC。webdriver和Selenium RC之間有以下共同的特色:
- 它們都支持使用一種編程語言來設計你的測試腳本
- 它們均支持驅動多種瀏覽器來進行自動化測試
那它們之間有什么區別呢?接下來讓我們一起看一看它們的區別:
1、架構
相比Selenium RC的架構,webdriver的架構更加簡潔。
- webdriver通過OS層級來控制瀏覽器
- webdriver運行你使用你喜歡的編程語言的IDE來進行腳本開發
webdriver架構圖
Selenium RC的架構更為復雜。
- 在運行測試腳本前必須先啟動Selenium RC Server
- Selenium RC Server扮演着瀏覽器和測試腳本之間通信的橋梁角色
- 當開始運行測試腳本時,Selenium RC Server會Selenium Core(js代碼)注入到瀏覽器中以達成控制瀏覽器
- 一旦Selenium Core被注入到瀏覽器中,Selenium Core就會開始接收並轉發來自Seleniun RC Server的測試指令
- 當測試指令接收后,Selenium Core就會把它們當做js來執行
- 瀏覽器按照Selenium Core的指令進行操作,並將執行結果返回給Selenium RC Server
- Selenium RC Server將接收到的結果返回給你的測試腳本
- Selenium RC Server繼續從你的測試腳本發送過來的指令中提取下一條指令,重復上述過程。
Selenium RC 架構圖
2、速度
在運行速度方面,webdriver會遠遠好於Selenium RC。原因是Webdriver直接調用瀏覽器原生API進行驅動,而Selenium RC則通過Selenium Core(javascript實現)來間接驅動瀏覽器。
3、交互機制
- webdriver直接與瀏覽器進行交互
- Selenium RC通過Selenium RC Server中轉才能與瀏覽器進行交互
4、API
- Selenium RC的API復雜冗余,不利於學習掌握
- Webdriver的API簡潔,只要掌握幾個常用的即可進行測試
5、支持的瀏覽器
- Selenium RC只能驅動可視化的瀏覽器
- webdriver除了驅動可視化的瀏覽器,還可以驅動內存模式的瀏覽器,比如HtmlUnit browser,phantomjs
webdriver的局限性
- webdriver無法及時的支持最新版本的瀏覽器,每次瀏覽器升級后,需要下載新的驅動程序。
- webdriver必須基於腳本模式開發測試用例
總結
- webdriver支持使用多種編程語言進行跨瀏覽器的web測試
- webdriver的強大在於支持N中編程語言來設計和實現測試
- webdriver執行速度更快是因為其簡潔的架構
- webdriver直接驅動瀏覽器
- webdriver支持內存模式的瀏覽器
- webdriver不能實時的支持最新版瀏覽器
- webdriver沒有內置的命令模式來自動生成測試結果