Selenium 1.0
Selenium 1.0是第一個基於瀏覽器的開源自動化測試工具。它可以使用所有支援http庫的程式語言,也可以執行在所有支援javascript的瀏覽器上。當然它 也有它的缺點。在執行selenium 1.0程式之前,我們得先啟動selenium伺服器端,也就是selenium RC。而selenium RC是由javascript實現的,每一個瀏覽器對於執行JavaScript都有很嚴格的安全限制,以防止使用者被惡意指令碼攻擊,這導致在某些情況下用 selenium 1.0很麻煩。
selenium 1.0有以下3個問題亟待解決:
WebDriver
WebDriver專案是由Simon Stewart(來自Google)建立的,是一個非常便捷的自動化測試工具。它採用HtmlUnit,可以直接在記憶體中執行。而且WebDriver 還可以呼叫作業系統的API,尤其當使用者需要模擬滑鼠和鍵盤進行真實的頁面操作的時候,這項能力作用尤為明顯。Webdriver也有它的缺點,使用它控 制瀏覽器的時候,需要依賴採用本機支援的獨立客戶端。WebDriver僅提供Java繫結,並不能支援Selenium 1 所能支援的那麼多瀏覽器。
Selenium 1.0 vs WebDriver
- WebDriver 可以繞過JavaScript 黑盒。
- Selenium 1.0要求真實的瀏覽器環境,而WebDriver可以直接操作HtmlUnit驅動。針對某些瀏覽器比如說Firefox執行比較慢的情況,我們可以採用HtmlUnit驅動在系統記憶體中迅速的執行。
- WebDriver不支援並行測試,而Selenium Grid可以。
- WebDriver支援的瀏覽器有限,而selenium 1.0幾乎支援瀏覽器,而且針對每一種瀏覽器都支援很多種語言。
- 一些selenium 1.0沒有解決的問題,比如說“原生的滑鼠和鍵盤事件”,WebDriver可以通過呼叫系統的API來實現。
Selenium 1.0 +WebDriver =Selenium 2.0
於是,為了綜合了selenium 1和WebDriver的優點, Selenium 2(也被稱為 Selenium WebDriver)面世。Selenium 2具有來自WebDriver的清晰物件導向API,並能以最佳的方式與瀏覽器進行互動。Selenium 2不使用JavaScript沙盒,支援多種瀏覽器和多語言繫結。具體的有:
- Mozilla Firefox
- Google Chrome
- Microsoft Internet Explorer
- Opera
- Apple iPhone
- Android browsers
Selenium 2支援的語言有Java、C#、Ruby和Python。Selenium 2 還提供基於HtmlUnit的無外設驅動,是用於測試Web應用程式的Java框架。HtmlUnit執行速度特別快,但它不是一個真正與真實瀏覽器相關聯的驅動。
Selenium 工具
目前說的selenium,一般包括以下四個工具:
Selenium Core:Selenium 核心內容,是IDE和RC的引擎。內部由JavaScript函式構成,通過呼叫這些函式來實現對瀏覽器的各種操作。
Selenium IDE:一款Firefox 外掛。具有錄製、編輯以及回放指令碼的功能,易於上手,對於初學者可以開發一些簡單的測試指令碼。
Selenium WebDriver(Selenium 2.0):由Selenium 和WebDriver合併而成。它支援WebDriver API和底層技術以及在WebDriver API下的Selenium 1.0的技術。Selenium 2.0仍然可以執行於Selenium 1.0的Selenium RC介面以支援向後相容。
Selenium RC(Selenium 1.0):Selenium Remote Control。遠端控制,也就是通過指令碼操作瀏覽器。它允許測試人員使用一種程式語言根據需求擴張測試指令碼的複雜度、延展度。主要包括三部分:launcher,http proxy,selenium core。
Selenium Grid:允許同時在不同的環境上執行多個測試任務。
Selenium工具比較
- 瀏覽器支援
- Selenium IDE僅可以在Firefox中工作。
- Seleneium RC支援很多瀏覽器,包括最常用的:Firefox,IE,Safari等
- Selenium Core支援的瀏覽器最廣,這點和它的實現有關。
- 需要遠端安裝
- 這裡只有Selenium Core需要,處於同源策略的原因。這也是Selenium Core的一大限制。
- Selenium IDE和Selenium Core HTA不會被同源策略限制,因為他們對瀏覽器擴充套件了。
- Selenium RC提供一個代理伺服器來保證Selenium JS檔案看似來自相同的遠端伺服器,從而符合同源策略;代理伺服器欺騙瀏覽器。
- 支援HTTPS/SSL
- 都支援
- 需要JAVA
- 只有Selenium RC需要。由於代理伺服器是一個JAVA程式,所以需要在跑測試用例前啟動。
- 將測試結果儲存到磁碟
- 只有Selenium Core不能將任何測試結果寫到磁碟上。因為他是用JS寫的,不允許向磁碟寫資料。解決方案是將測試結果傳送到另外一臺伺服器儲存。
- 多語言支援
- Selenium IDE僅支援Selenium語言。
- Selenium RC支援很多語言。如:C#,Java,Python,Ruby等。
- Selenium Core也是僅支援Selenium 語言。
備註:
Selenium語言,使用(Command,Target,Value)三種元素組成一個行為,可以使用Selenium IDE輔助錄製指令碼,不懂測試的人員都可以輕鬆編寫測試案例。
缺點是:Selenium 語言沒有條件(if),沒有迴圈(for),使得編寫複雜的測試變得困難甚至不可能。