1、Selenium介紹
Selenium
是一個用於Web應用程式測試的工具。
只要在測試用例中把預期的使用者行為與結果都描述出來,我們就得到了一個可以自動化執行的功能測試套件。Selenium
測試套件直接執行在瀏覽器中,就像真正的使用者在操作瀏覽器一樣。Selenium
也是一款同樣使用Apache License 2.0
協議釋出的開源框架。Selenium
工具的主要功能包括:- 測試程式與瀏覽器的相容性,測試你的應用程式是否能夠很好得工作在不同瀏覽器和作業系統之上。
- 測試系統功能,建立迴歸測試檢驗軟體功能和使用者需求。
2、Selenium的特點
- 開源,免費。
- 多瀏覽器支援:
FireFox
、Chrome
、IE
、Opera
、Safari
。 - 多平臺支援:Linux、Windows、MAC。
- 多語言支援:
Java
、Python
、Ruby
、php
、C#
、JavaScript
等。 - 對WEB頁面有良好的支援。
- 簡單(API簡單)、靈活(用開發語言驅動)。
- 支援分散式測試用例執行。
3、Selenium版本說明
從2004年至今,Selenium經歷了3個版本,即Selenium1.0
,Selenium2.0
,Selenium3.0
。
(1)Selenium1.0
Selenium 1.0
包括:Selenium IDE
、Selenium Grid
、Selenium RC
三部分。
Selenium IDE
:是Firefox瀏覽器中的一個外掛,實現簡單的瀏覽器操作的錄製與回放功能。生成測試用例,可將測試用例轉換為其他語言的自動化指令碼。如果沒有程式設計經驗,可以通過Selenium IDE來快速熟悉Selenium的命令。(只適用於火狐瀏覽器)Selenium Grid
:分散式測試。用於執行在不同的機器,不同的瀏覽器並行測試的工具,目的在於加快測試用例執行的速度,從而減少測試執行的總時間。利用Grid可以很方便地實現在多臺機器上和異構環境中執行測試用例。Selenium RC
:Selenium RC
是Selenium1.0
核心部分。簡單的說,Selenium RC
的功能就是通過程式碼操作瀏覽器。
(2)Selenium2.0
Selenium 2.0
= Selenium 1.0
+ WebDriver
WebDriver
比Selenium RC
功能強大且簡單。WebDriver是通過原生瀏覽器支援或者瀏覽器擴充套件來直接控制瀏覽器。WebDriver針對各個瀏覽器而開發,使用不同瀏覽器都需要對應瀏覽器驅動,與瀏覽器緊密整合,因此支援建立更高階的測試,避免了JavaScript安全模型導致的限制。除了來自瀏覽器廠商的支援之外,WebDriver還利用作業系統級的呼叫,模擬使用者輸入。我們在使用WebDriver時,可以看到,是先啟動了瀏覽器對應driver,通過瀏覽器driver啟動瀏覽器。
(3)Selenium3.0
(推薦)
Selenium 3.0
在Selenium2.0
的基礎上有了更多的改進,支援的原生驅動方面更為豐富。
去掉了對SeleniumRC
的支援。
JDK的最低版本要求為JDK8(只有在測試分散式的時候,才需要Java環境)。
(4)提示
Selenium 3.0
在Selenium 2.0
的基礎上增加了對Win10系統的Edge
瀏覽器和Mac系統Safari
瀏覽器的支援,並且在啟動Firefox
瀏覽器時也必須使用瀏覽器驅動geckodriver
。去掉了Selenium RC
,因此Selenium 3.0
的學習核心也是WebDriver。
(5)Selenium元件總結
4、拓展:WebDriver與Selenium RC的區別
(1)Selenium RC
Selenium RC
使用的是javascript
注入的方式跟瀏覽器打交道。這樣 Selenium RC
需要啟動一個Server
,然後將操作頁面元素的API 轉成javascript
指令碼,再把這段指令碼注入到瀏覽器中去執行。而通過這種javascript注入的方式一來太依賴翻譯成javascript
質量的好壞,二來javascript
存在同源問題。這使測試變得不那麼容易。
總結:
Selenium RC
需要Selenium Server
才能執行測試用例。Selenium RC
使用JavaScript
來驅動瀏覽器執行測試用例。Selenium RC
只能支援Web應用的測試。Selenium RC
能支援所有瀏覽器但並不能及時支援最新版本。
(2)WebDriver
與Selenium RC
不同的是Selenium WebDriver
針對不同的瀏覽器進行獨立開發Driver
,利用瀏覽器的原生API去直接操作瀏覽器和頁面元素,這樣大大提高了測試的穩定性和速度。當然因為不同的瀏覽器對Web元素操作和呈現多多少少會存在一些差異,這也就造成現在不同的瀏覽器需要有對應不同的Driver
。
總結:
WebDriver
不需要Selenium Server
就可以執行測試用例。WebDriver
獨立使用原生瀏覽器來執行測試用例。WebDriver
既可以測試傳統桌面Web應用,也可以測試手機上的應用程式,如iPhone或Android上的app程式。WebDriver
能支援大多數瀏覽器的最新版本。
(3)總結:
5、Webdriver工作原理
如下圖所示:
參考: