線上書籍

Home

Selenium

一.Selenium是什麼?

Selenium是ThroughtWorks公司一個強大的開源Web功能測試工具系列,本系列現在主要包括以下4款:

  1. Selenium Core:支持DHTML的測試案例(效果類似數據驅動測試),它是Selenium  IDE和Selenium  RC的引擎。
  2. Selenium IDE:FireFox的一個插件,支持腳本錄製。
  3. Selenium RC:Selenium Remote Control。後續的系列文章我會主要針對Selenium RC展開介紹。
  4. Selenium Grid:允許同時並行地、在不同的環境上運行多個測試任務,極大地加快Web應用的功能測試。
二.選擇合適的Selenium工具

既然Selenium工具有4款這麼多,那到底如何選擇呢??我從"Selenium官網"這裡找了一個表:

  Selenium IDE Selenium Remote Control Selenium Core Selenium Core HTA
瀏覽器支持 僅Firefox 很多 所有 僅IE
需要遠程安裝
支持 HTTPS/SSL 是*
支持跨域 是*
需要Java
將測試結果保存到磁盤
多語言支持 僅Selenese 很多 僅Selenese 僅Selenese

這裡沒有介紹Selenium Grid,但介紹了另外一個Selenium Core HTA,Selenium Core HTA其實是Selenium Core的額外模式,你只要Selenium Core配置稍加修改,即為HTA模式,Selenium Core HTA可以在IE最高安全等級(特權)下工作,這意味著它僅能在IE下工作,由於限制較大,下面將排除對Selenium Core HTA的討論。

1.瀏覽器支持:

    (1).Selenium IDE僅可以在Firefox中工作。

    (2).Selenium Remote Control支持很多瀏覽器,包括最常用的:firefox,ie,safari等N款瀏覽器。

    (3).Selenium Core支持的瀏覽器是最廣的,這點和它的實現有關。作為IDE和RC的引擎,Selenium Core幾乎可以在任何瀏覽器中工作。

2.需要遠程安裝:是否需要在被測網站的服務端安裝?

    這裡只有Selenium Core需要,這是出於同源策略的原因。這也是Selenium Core一個很大的限制,試問,如果你要測試Google.com,還得在google的服務器上裝一個Selenium Core,那是多搞笑的一件事。

    而Selenium IDE和Selenium Core HTA不會被同源策略所限制,因為他們對瀏覽器擴展了。

     Selenium RC提供一個代碼服務器來保證Selenium JS文件看似來自相同的遠程服務器,從而符合同源策略;代理服務器欺騙瀏覽器,讓它認為這裡的確有像http://www.google.com/selenium/這樣的目錄。

3.支持HTTPS/SSL:

    這裡不說了,都支持。Selenium RC在「是」後面加*因為它是在最近版本支持的,僅此而已。

4.需要Java:準確的說是需要JRE

    這項只有Selenium RC需要,上面2中所說的「代理服務器」是一個Java程序,需在跑測試案例前啟動。

5.將測試結果保存到磁盤

    只有Selenium Core不能將任何測試結果寫到磁盤上(因為它是用javascript寫的,它不允許向磁盤寫數據),其解決方案是當然你可以將測試結果發送到另外一台服務器保存。這也是Selenium Core的一大限制。

6.多語言支持

    (1).Selenium IDE僅支持Selenium語言。

    (2).Selenium RC支持很多語言,如:C#,Java,Python,Ruby等。

    (3).Selenium Core也是僅支持Selenium語言。

Selenium語言的測試案例如下:

它的優點是:簡單,用(Command,Target,Value)三種元素組成一個行為,並且有輔助錄製腳本工具(如:Firefox IDE,Selenium Core等),不懂程序的測試人員都可以輕鬆地編寫測試案例。

它的缺點是:Selenese有一些嚴格的限制:它沒有條件(沒有"if"表達式),並且它沒有循環(沒有"For"表達式)。這會使編寫複雜的測試變得困難甚至不可能。

    OK,現在我們來研究下到底該使用哪款工具開展測試!

    (1).Selenium IDE支持並且只支持Firefox瀏覽器,支持的瀏覽器太少,而依附於Firefox也不便於日後開展自動化測試,但是,它的錄製快捷好用!並且有代碼 轉換功能,可以把Selenium語言測試案例轉為C#,Java等語言的測試案例,我建議使用Selenium IDE + FireBug進行測試案例的編寫,然後轉為其他語言的測試案例後,再調用Selenium RC運行測試案例。

    (2).Selenium Core,它的優點是編寫測試案例簡單,並且支持絕大多數的瀏覽器,但缺點也同樣明顯,Selenium Core需要遠程安裝,Selenese語言也限制了複雜案例的可能性,並且沒有良好的外部擴展,這是些都會是致命的問題。因為一個款測試工具不可能 100%滿足你測試需求的,當它不能滿足你測試需求時候,它必須有一個擴展機制可以讓你可以使用其他的方式滿足你需求,否則這款測試軟件即使功能強大,也 請三思慎用,否則當投入大量資源後才發現某些問題不能解決,那時候已經晚了,這是我的切身體會。

    (3).Selenium RC是我推薦使用的工具,它支持很多瀏覽器,可以使用C#,Java等語言編寫測試案例,易於維護,同時提供了很好的擴展性,所以後續的文檔我會以Selenium RC作為默認的測試工具。