Selenium自動化測試框架入門整理
關注嘉為科技,獲取運維新知
本文主要針對Selenium自動化測試框架入門整理,只涉及總體功能及框架要點介紹說明,以及使用前提技術基礎要求整理說明。作為開發人員、測試人員入門參考。
本文參考:Selenium框架最新技術規範及相關資料
簡介
Selenium也是一款同樣使用Apache License 2.0協議釋出的開源框架。Selenium也是一套完整的Web應用程式測試系統工具,它包含了:
Selenium的核心Selenium Core基於JsUnit,完全由JavaScript編寫,因此可運行於任何支援JavaScript的瀏覽器上;
測試的錄製(Selenium IDE);
編寫及執行(Selenium Remote Control)(3.X移除了);
測試的並行處理(Selenium Grid);
Selenium2.X包含該了WebDriver和SeleniumRC(相容以前版本)。Selenium3.X只包含WebDriver,移除了SeleniumRC。
Selenium整體產品結構如下:(3.x以後版本去除了SeleniumRC)
Selenium IDE:
是一個用於構建指令碼的初級工具,其實是FireFox的一個外掛,擁有一個易於使用的介面。它擁有記錄功能,能夠記錄使用者執行的操作,並可以匯出為可重複使用的指令碼。如果沒有程式設計經驗,可以通過Selenium IDE來快速熟悉Selenium的命令。該工具實際使用不多。Selenium-core 是使用HTML的方式來編寫測試指令碼,你也可以使用 Selenium-IDE來錄製指令碼,但是目前Selenium-IDE只有 FireFox 版本。
Selenium-RC(Selenium3.X 移除):
selenium-remote control 縮寫,是使用具體的語言來編寫測試類。Selenium RC支援多種不同的語言編寫自動化測試指令碼,通過SeleniumRC的伺服器作為代理伺服器去訪問應用,從而達到測試的目的。主要包含以下兩大部分:
ClientLibraries庫主要用於編寫測試指令碼,用來控制SeleniumServer的庫。
SeleniumServer負責控制瀏覽器行為。SeleniumServer包含三部分:Launcher,Http Proxy和Core。其中,Selenium Core是被Selenium Server嵌入到瀏覽器頁面中的,其實SeleniumCore就是一堆JavaScript函式的集合,即通過這些JavaScript函式,我們才可以實現用程式對瀏覽器進行操作。Launcher用於啟動瀏覽器,把Selenium Core載入到瀏覽器頁面當中,並把瀏覽器的代理設定為SeleniumServer的HttpProxy。
WebDriver:
Selenium2.x提出了WebDriver的概念之後,它提供了完全另外的一種方式與瀏覽器互動。那就是利用瀏覽器原生的API,封裝成一套更加面向物件的SeleniumWebDriver API,直接操作瀏覽器頁面裡的元素,甚至操作瀏覽器本身(截圖,視窗大小,啟動,關閉,安裝外掛,配置證書之類的)。由於使用的是瀏覽器原生的API,速度大大提高,而且呼叫的穩定×××給了瀏覽器廠商本身,顯然是更加科學。然而帶來的一些副作用就是,不同的瀏覽器廠商,對Web元素的操作和呈現多少會有一些差異,這就直接導致了Selenium WebDriver要分瀏覽器廠商不同,而提供不同的實現。例如Firefox就有專門的FirefoxDriver,Chrome就有專門的ChromeDriver等等。(甚至包括了AndroidDriver和iOS WebDriver)
Selenium Grid:
實現測試的並行處理。
基於Selenium進行測試的方式及流程
Selenium RC方式(3.X以後版本移除該方式):
測試用例通過Http請求建立與 Selenium-RC server 的連線;
Selenium RC Server 驅動一個瀏覽器,把Selenium Core載入入瀏覽器頁面當中,並把瀏覽器的代理設定為Selenium Server的Http Proxy;
執行用例向Selenium Server傳送Http請求,Selenium Server對請求進行解析,然後通過Http Proxy傳送JS命令通知Selenium Core執行操作瀏覽器的動作並注入 JS 程式碼;
Selenium Core執行接受到的指令並操作;
當瀏覽器收到新的請求時,傳送http請求;
Selenium Server接收到瀏覽器傳送的Http請求後,自己重組Http請求,獲取對應的Web頁面;
Selenium Server中的Http Proxy把接受到的頁面返回給瀏覽器。
WebDriver(目前主流方式):
Selenium 2.X啟動SeleniumRC至今為止還保留著,應該是考慮到向前相容。Selenium 3.X完成移除了SeleniumRC。
Selenium2.X增加了WebDriver,保持RC向前相容。WebDriver專案是由Simon Stewart建立的,它是一個非常便捷的自動化測試工具。WebDriver對不同瀏覽器的處理方式和RC有著明顯的不同,RC是不管什麼瀏覽器都是JavaScript來處理,而WebDriver是選擇瀏覽器最容易接受的語言來處理。比如,在IE中,C++最合適,在Firefox中, JavaScript最合適等等。通過靈活選擇最合適的語言來處理多瀏覽器,我們可以很好的迴避某些瀏覽器對JavaScript的安全限制。而且WebDriver不僅僅具有這些能力,它還能夠呼叫作業系統API,尤其是當用戶需要模擬滑鼠和鍵盤進行真是的頁面操作的時候,這項能力的作用尤為明顯。
現在支援的WebDriver:AndroidDriver,ChromeDriver, FirefoxDriver, HtmlUnitDriver, EventFiringWebDriver,InternetExplorerDriver, IPhoneDriver, IPhoneSimulatorDriver, RemoteWebDriver。
Selenium Grid(目前主流的方式):
傳統的無Grid的模式,只能在一臺機器上進行測試。Selenium可以在上面兩種方式下進行執行,第一種是每臺機器都是一致的,第二種是可以指定特定的瀏覽器或者特定的作業系統執行。
自動化測試指令碼編制要求
前提熟悉:HTML /XML/...
前提熟悉:XPath(XML路徑語言 http://www.runoob.com/xpath/xpath-tutorial.html)
開發語言:Java/Python/C#/PHP/…,最起碼熟悉一種開發語言。
FIT模式:Selenium指令碼(JS):命令用法 。
Driver模式:庫(不同語言有不同客戶端)的熟練使用:方法、函式等。
可採用Selenium WebDriver + TestNG框架(TestNG 是一個測試 Java 應用程式的新框架)模式。
建立測試用例指令碼的編制規範(針對WebDriver模式)
可利用Jenkins整合Selenium Grid + WebDriver,及 Selenium Report外掛。
測試結果報告展現方式
要結合其他框架的測試報告模板,例如TestNG的測試結果報告、ReportNg等;
Jenkins整合selenium,可利用 selenium report 外掛輸出;
可結合自主開發測試結果展現處理平臺,關聯到任務平臺當中。
整合成本及方式
需進行Selenium指令碼的學習以及相關技術的學習;
基於Selenium的WebDriver模式,測試用例的編制要求具備資料一種開發語言(主流模式);
如結合TestNG,則需熟悉Java。
我們可採用Jenkins + Selenium + TestNG + Selenium report (ReportNG) 整合的模式進行Web應用的自動化測試。在DevOps產品研發中,可融合封裝使用Selenium進行WEB應用自動化測試。
如需深入瞭解,請在網路上參考官方的文件及相關資料等。
Selenium+藍鯨,可以實現應用功能自動化撥測哦!點選文章檢視是如何實現的?《分享 | 基於藍鯨平臺實現應用功能自動化撥測》