- Selenium自動化測試之道
- Ping++測試團隊
- 947字
- 2020-11-28 14:42:26
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對象進行詳細介紹。
- Boost.Asio C++ Network Programming(Second Edition)
- Node.js 10實戰(zhàn)
- LabVIEW2018中文版 虛擬儀器程序設(shè)計自學手冊
- Python量化投資指南:基礎(chǔ)、數(shù)據(jù)與實戰(zhàn)
- DevOps入門與實踐
- Django Design Patterns and Best Practices
- Scala Reactive Programming
- Mastering Git
- 并行編程方法與優(yōu)化實踐
- 深入理解Java虛擬機:JVM高級特性與最佳實踐
- Qt 5.12實戰(zhàn)
- Android從入門到精通
- Python人工智能項目實戰(zhàn)
- Visual FoxPro數(shù)據(jù)庫程序設(shè)計
- Mastering PostgreSQL 11(Second Edition)