- Selenium WebDriver自動化測試完全指南
- 劉傲凡
- 1141字
- 2020-05-20 09:24:38
1.2 Selenium WebDriver
大名鼎鼎的Selenium在2004年由一個名為Jason Huggins的年輕人開發。當時,Jason Huggins在芝加哥的ThoughtWorks公司工作,他的主要職責是為內部的時間和費用(Time and Expense)系統開發一個基于Java腳本的運行測試系統(Java Script Test Runner)。作為一個推崇自動化的技術人員,他意識到與其手工測試每次改動,不如用一個程序來代替自己,以便有效利用自己的時間。
于是他開發了一個可以驅動頁面進行交互的JavaScript庫,用于讓瀏覽器測試后自動返回測試結果。這個庫最初只是一些能夠與Web頁面進行交互的JavaScript的函數庫,但它為Selenium RC和Selenium IDE的核心部分奠定了基礎。隨著庫內函數的不斷豐富,Selenium也就逐漸發展成了一個實現模擬人類操作瀏覽器行為的項目。
講到這里,我們要再提起Selenium的名字。如果你翻查字典,就會驚訝地發現Selenium這個單詞和自動化測試一點關系也沒有,它是化學元素硒的英文名。硒對汞(英文名為Mercury,元素符號為Hg)有拮抗作用。這其中存在著一定的歷史淵源:在早期,ThoughtWorks公司想過購買用于商業測試的Mercury系列工具(QTP、LR和TD),但因這家起步不久的公司難以負擔起這一系列商業測試工具的高昂費用而購買失敗。ThoughtWorks在成功開發出自己的測試工具后就將其進行了開源,并且起名為Selenium,來表達自己的情緒。
在2006年,Google已是Selenium的重要用戶,但是Google的測試工程師不得不繞過它的限制進行測試,因為瀏覽器對JavaScript資源產生的同源問題,以及瀏覽器在安全性方面的提高,導致Selenium有很大局限性。他們需要一款更先進的測試工具,用這個工具通過瀏覽器和操作系統的本地方法來直接和瀏覽器進行交互,以解決在長期以來使用Selenium時遇到的問題。于是Google的工程師Simon Stewart開始對Selenium進行二次開發,這個項目被命名為WebDriver(后來被稱為Selenium WebDriver)。WebDriver項目的目的就是解決使用Selenium時產生的問題。
Selenium的項目在歷史上存在3個重大版本,分別是Selenium 1.0(見圖1-1)、Selenium 2.0和Selenium 3.0。Selenium1.0版本的主要內容是Selenium RC(Remote Control),現在已經被官方正式棄用,不再推薦用戶使用Selenium RC。
可以說Selenium 1.0和Selenium 2.0最大的區別就在于WebDriver。在Selenium官方網頁上有這樣一個等式:
Selenium 1.0+WebDriver=Selenium 2.0
現在比較先進并被廣泛使用的版本是Selenium 3.0。Selenium 3.0也包含了Selenium WebDriver,但與之前版本不同的是,它移除了對Selenium RC核心代碼的支持。
Selenium Grid(見圖1-2)和Selenium IDE(見圖1-3)則一直獨立在Selenium的主要項目之外,作為一個分支而存在。

圖1-1 Selenium RC

圖1-2 Selenium Grid

圖1-3 Selenium IDE
細心的讀者不難發現,三種圖標的區別在于右上角的小標志。
Selenium Grid的主要目的在于允許用戶在多臺機器上進行并行測試。換句話說,Selenium Grid支持分布測試,可以讓用戶的自動化測試在一個分布式環境中運行。
現行的Selnium主要分為兩個部分—— Selenium WebDriver和Selenium IDE。前者主要用來創建基于瀏覽器的回歸自動化套件和測試,后者主要用來創建快速的bug重現腳本,以幫助用戶進行自動化輔助的探索性測試。具體的Selenium項目的工具分支如圖1-4所示。

圖1-4 Selenium項目的工具分支
Selenium項目在未來將更加標準化,即加大對W3C(萬維網聯盟)標準的踐行,取消對部分不符合W3C標準的WebDriver內容的支持。
- Extending Jenkins
- The Supervised Learning Workshop
- Vue.js設計與實現
- Hands-On Machine Learning with scikit:learn and Scientific Python Toolkits
- Visual C++串口通信開發入門與編程實踐
- Xcode 7 Essentials(Second Edition)
- 樂學Web編程:網站制作不神秘
- R語言數據可視化之美:專業圖表繪制指南
- Learning AWS Lumberyard Game Development
- R語言數據可視化實戰
- 人人都懂設計模式:從生活中領悟設計模式(Python實現)
- Windows Embedded CE 6.0程序設計實戰
- Apache Camel Developer's Cookbook
- R語言數據可視化:科技圖表繪制
- QGIS 2 Cookbook