官术网_书友最值得收藏!

2.2 Selenium家族

Selenium與傳統(tǒng)意義上的主流測試工具QTP、JMeter、LoadRunner等不同,用“一個工具”這樣的字眼來形容Selenium并不恰當。Selenium是一套Web應(yīng)用的測試框架,為了滿足不同的需要,它提供了幾個組件形成了所謂的“Selenium家族”。其家族成員簡要介紹如下。

● Selenium IDE:是一個Firefox瀏覽器的附加組件,提供錄制回放功能,可以快速創(chuàng)建測試用例,并且可以將錄制生成的腳本轉(zhuǎn)換為多種編程語言的腳本。

● Selenium RC(Remote Control):Selenium RC是一個用Java語言編寫的服務(wù)端,可以處理測試腳本發(fā)送過來的HTTP請求,來操作瀏覽器。

● Selenium Grid:支持分布式測試,即可以在不同平臺、不同瀏覽器的多臺遠程機器上同時運行Selenium測試腳本,從而提高測試效率,減少執(zhí)行時間。

● Selenium WebDriver:正如我們在2.1節(jié)的示例,WebDriver是測試腳本的核心。在測試腳本中,通過調(diào)用WebDriver對象的方法來操作瀏覽器。

縱觀Selenium的歷史,它最初作為ThoughtWorks公司的內(nèi)部工具使用,2004年被Jason Huggins開發(fā)出來,于2005年聞名于世。Selenium Grid在2008年由Philippe Hanrigou開發(fā)出來。當時Selenium IDE、Selenium RC、Selenium Grid被統(tǒng)稱為Selenium 1.0。直到2009年,開發(fā)者們決定將Selenium RC與由另一名ThoughtWorks工程師Simon Stewart開發(fā)的WebDriver合并,這便有了Selenium WebDriver,就此開啟了2.0時代。

Selenium 2.0是由Selenium 1.0與WebDriver合并產(chǎn)生的?,F(xiàn)在看起來,Selenium WebDriver仿佛成了“主角”,但并不意味著Remote Control就毫無用武之地。下文將介紹Selenium RC與WebDriver的工作原理,3.1節(jié)將對它們的用法做具體的演示。

簡而言之,Selenium IDE是為了方便錄制,Selenium Grid是為了提升執(zhí)行效率,Selenium RC/WebDriver是腳本編寫的核心。接下來,讓我們深入了解Selenium RC與WebDriver的工作原理,以及它們之間的差異。

如圖2-1所示,Selenium RC的工作原理是,在測試腳本執(zhí)行之前,需要啟動Selenium服務(wù)端,通過注入JavaScript形成沙箱環(huán)境,在沙箱環(huán)境中完成測試腳本中指定的瀏覽器操作。

圖2-1 Selenium RC的工作原理

而WebDriver是從瀏覽器外部來控制的,通過調(diào)用瀏覽器原生接口來驅(qū)動,完成頁面操作。比如說,當我們的腳本操作Firefox瀏覽器的時候,WebDriver是用JavaScript來調(diào)用API的,而當我們操作IE瀏覽器的時候,WebDriver就用C++了。

由于有些頁面元素在沙箱和瀏覽器上的展示有很大出入,因此調(diào)用瀏覽器原生接口或許是控制瀏覽器的最好方式了。但問題是,如果有新的瀏覽器問世,WebDriver API就無法支持,而Selenium RC可以。

Selenium RC與WebDriver合并之后,也就是Selenium 2.0之后,對于主流的瀏覽器Chrome、IE、Firefox上的頁面操作,可以基于各自的Driver文件(2.1節(jié)末尾提到的geckodriver正是Firefox瀏覽器的Driver文件),而無須啟動服務(wù)端。同時,還支持RemoteWebDriver,使用方式與Remote Control一致。我們將在第3章對不同的Driver對象進行詳細介紹。

主站蜘蛛池模板: 武鸣县| 山东省| 河东区| 阳东县| 高陵县| 香港| 宁乡县| 阳曲县| 昌图县| 英超| 丁青县| 安乡县| 红原县| 新密市| 新绛县| 富宁县| 衡东县| 新河县| 法库县| 星座| 大冶市| 南皮县| 云龙县| 永安市| 特克斯县| 黎平县| 长海县| 徐闻县| 乌恰县| 沅江市| 湛江市| 若尔盖县| 长乐市| 建瓯市| 巩义市| 郸城县| 阜康市| 林芝县| 体育| 宝坻区| 北安市|