參考:http://www.51testing.com/zhuanti/selenium.html,http://www.cnblogs.com/fnng/p/3653793.html
簡介:
Selenium是一個用於Web應用程序測試的工具,是ThoughtWorks專門為Web應用程序編寫的一個驗收測試工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。、
- 支持的瀏覽器:IE、Mozilla Firefox、Mozilla Suite等。
- 主要功能:
- 測試與瀏覽器的兼容性——測試你的應用程序看是否能夠很好得工作在不同瀏覽器和操作系統之上。
- 測試系統功能——創建衰退測試,檢驗軟件功能和用戶需求。
- 支持自動錄制動作和自動生成.Net、Java、Perl等不同語言的測試腳本。
版本
Selenium 現在存在2個版本,一個叫 selenium-core, 一個叫selenium-rc 。
- selenium-core 是使用HTML的方式來編寫測試腳本,你也可以使用 Selenium-IDE來錄制腳本,但是目前Selenium-IDE只有 FireFox 版本。
- selenium-rc 是 selenium-remote control 縮寫,是使用具體的語言來編寫測試類。selenium-rc 支持的語言非常多,這里我們着重關注java的方式。這里講的也主要是 selenium-rc。
組成:
selenium 不是簡單的一個工具,而是由幾個工具組成,每個工具都有其特點和應用場景。
selenium 1.0
IDE:錄制(只能用於FF,然后轉化成其他語言,使用RC去調用) Grid:並行程序的執行 RC:程序編寫及運行 Selenium Core:基於JsUnit,由JS編寫,可運行於任何支持JS的瀏覽器。 |
-
1. selenium IDE
selenium IDE 是嵌入到Firefox瀏覽器中的一個插件,實現簡單的瀏覽器操作的錄制與回放功能。那么什么情況下用到它呢?快速的創建bug重現腳本,在測試人員的測試過程中,發現了bug之后可以通過IDE將重現的步驟錄制下來,以幫助開發人員更容易的重現bug。IDE錄制的腳本可以轉換成多種語言,從而幫助我們快速的開發腳本,關於這個功能后而用到時再詳細介紹。
-
2. selenium Grid
Selenium Grid是一種自動化的測試輔助工具,Grid通過利用現有的計算機基礎設施,能加快Web-app的功能測試。利用Grid,可以很方便地同時在多台機器上和異構環境中並行運行多個測試事例。其特點為:
- 並行執行
- 通過一個主機統一控制用例在不同環境、不同瀏覽器下運行。
- 靈活添加變動測試機
-
3. selenium RC
selenium RC 是selenium 家族的核心工具,selenium RC 支持多種不同的語言編寫自動化測試腳本,通過selenium RC 的服務器作為代理服務器去訪問應用從而達到測試的目的。
selenium RC 使用分為Client Libraries和selenium Server:
-
- Client Libraries庫主要主要用於編寫測試腳本,用來控制selenium Server的庫。
- Selenium Server負責控制瀏覽器行為,總的來說,Selenium Server主要包括3個部分:Launcher、Http Proxy、Core。其中Selenium Core是被Selenium Server嵌入到瀏覽器頁面中的。其實Selenium Core就是一堆JS函數的集合,就是通過這些JS函數,我們才可以實現用程序對瀏覽器進行操作。Launcher用於啟動瀏覽器,把selnium Core加載到瀏覽器頁面當中,並把瀏覽器的代理設置為Selenium Server 的Http Proxy。
selenium 2.0
搞清了selenium 1.0 的家族關系,selenium 2.0 是把WebDriver 加入到了這個家族中;簡單用公式表示為:
selenium 2.0 = selenium 1.0 + WebDriver |
需要強調的是,在selenium 2.0 中主推的是WebDriver ,WebDriver 是selenium RC 的替代品,因為 selenium 為了向下兼容性,所以selenium RC 並沒有徹底拋棄,如果你使用selenium開發一個新自動化測試項目,強列推薦使用WebDriver 。那么selenium RC 與webdriver 主要有什么區別呢?
- selenium RC 在瀏覽器中運行JavaScript應用,使用瀏覽器內置的JavaScript 翻譯器來翻譯和執行selenese命令(selenese 是selenium命令集合)。
- WebDriver通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器。WebDriver針對各個瀏覽器而開發,取代了嵌入到被測Web應用中的JavaScript。與瀏覽器的緊密集成支持創建更高級的測試,避免了JavaScript安全模型導致的限制。除了來自瀏覽器廠商的支持,WebDriver還利用操作系統級的調用模擬用戶輸入。
如果是新項目直接學習webdriver 就OK了,RC是過時技術。
學習路線:
1. 具備的知識和技術:
(1)selenium進行的自動化測試是基於ui層面的,所以html,css,javascript基本上是必不可少的,至於javascript,有很多的前端都使用javascript作為其腳本語言!不過javascript並不需要學得很深,只需要掌握一些基礎的知識,然后在實踐中碰到的時候再繼續深學下去!
(2)掌櫃一門編程語言,比如java,C#,python,ruby!很明顯,若是有開發語言的基礎,則寫腳本的時候也不會太費力,這也是一項基本功!目前,使用java還是偏多的!另外也是由於selenium支持多種語言寫測試腳本!自動化測試腳本並不能靠錄制出來的,基本上是要靠自己寫出來的,畢竟錄制的腳本的弊端很多,尤其是前端使用了某些框架之后,錄制的腳本基本成為雞肋!
(3)單元測試框架junit/testing,目前很多人采用selenium+junit或者selenium+testng測試架構,所以,需要掌握能配合selenium進行測試的框架,比如junit/testng,僅僅利用其提供的api便可以大大地輔助你的測試,提升測試效率!
環境搭建
一、開發環境:
1、JDK1.6
2、Eclipse:Version: Kepler Service Release 1,下載地址:http://www.eclipse.org/downloads/
3、Selenium:selenium-java-2.39.0.zip,下載地址:http://code.google.com/p/selenium/downloads/list
解壓selenium-java包,這個包里面包含四部分,如下圖:
二、新建一個Java Project:
1、創建一個java項目:
2、然后把上面解壓出來的文件拷到新建的project目錄下,目錄結構如下圖:
3、添加build path,項目目錄右鍵-->Build Path--> config build path-->Java Build Path-->Libraries-->Add JARs,把libs文件夾下的jar包全部添加上,再添加selenium-java-2.48.2-srcs.jar和selenium-java-2.48.2.jar
3、添加完之后目錄結構如下圖,多了Referenced Libraries,這里就是上面那一步添加進去的jar包:
至此,環境工作准備就緒,下面來寫一個簡單的小例子。
4、在src下面新建測試類,如下圖:
5、添加代碼,實現:打開百度,然后在百度搜索框輸入helloworld,點擊搜索按鈕,關閉瀏覽器。
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class TestClass { public static void main(String[] args) { //如果火狐瀏覽器沒有默認安裝在C盤,需要制定其路徑 //System.setProperty("webdriver.firefox.bin", "D:/Program Files/Mozilla firefox/firefox.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://www.baidu.com/"); driver.manage().window().maximize(); WebElement txtbox = driver.findElement(By.name("wd")); txtbox.sendKeys("HelloWorld"); WebElement btn = driver.findElement(By.id("su")); btn.click(); driver.close(); } }
然后直接右鍵-->Run As-->Java Application就可以看到效果了。