自動化測試工具知多少之Selenium, Selenide和Katalon
引子
之前就有個想法,整理一下自動化測試的相關工具,開始的時候以為不復雜,但是隻是簡單的列表似乎又單調了些,沒什麼意義。如果加上介紹和相關說明,放在一篇文章裡,又會太過雜亂。
乾脆還是先從細節開始,寫個系列文章來介紹工具,後面再做整理,可能會清楚一點。
從哪兒開始呢,要不咱先嘮嘮Selenium?
Selenium
這是鼎鼎大名家喻戶曉的工具了,大家應該都知道,它是做Web UI自動化的。
但是初次接觸的朋友可能還是會有點懵逼,什麼Selenium1.0, 2.0, 3.0, 什麼seleniumRC、Selenium IDE,Selenium Grid,還有WebDriver又是什麼鬼?所以咱也來先簡單介紹兩句。
1.0
Selenium 1.0 = Selenium IDE + Selenium Grid + Selenium RC
Selenium IDE是嵌入到Firefox瀏覽器中的一個外掛,實現簡單的瀏覽器操作的錄製與回放功能。
Selenium Grid是一種自動化的測試輔助工具,Grid通過利用現有的計算機基礎設施,能加快Web-App的功能測試。利用Grid可以很方便地實現在多臺機器上和異構環境中執行測試用例。
Selenium RC(Remote Control)是Selenium1.0的核心部分。Selenium RC 支援多種不同語言編寫的自動化測試指令碼,通過Selenium RC的伺服器作為代理伺服器去訪問應用,從而達到測試的目的。
Selenium RC分為Client Libraries和Selenium Server。Client Libraries庫主要用於編寫測試指令碼,用來控制Selenium Server的庫。Selenium Server負責控制瀏覽器行為。
關於1.0的介紹,簡單看看就好了,因為在2.0中,核心已經從RC變成了WebDriver。
WebDriver
在2006年的時候,Google的工程師Simon Stewart發起了WebDriver的專案。
Selenium RC 是在瀏覽器中執行JavaScript應用,使用瀏覽器內建的JavaScript翻譯器來翻譯和執行selenese命令(selenese是Selenium命令集合)。
WebDriver是通過原生瀏覽器支援或者瀏覽器擴充套件來直接控制瀏覽器。WebDriver針對各個瀏覽器而開發,取代了嵌入到被測Web應用中的JavaScript,與瀏覽器緊密整合,因此支援建立更高階的測試,避免了JavaScript安全模型導致的限制。除了來自瀏覽器廠商的支援之外,WebDriver還利用作業系統級的呼叫,模擬使用者輸入。
Selenium與WebDriver原是屬於兩個不同的專案,WebDriver的建立者Simon Stewart早在2009年8月的一份郵件中解釋了專案合併的原因。
Selenium與WebDriver合併原因:為何把兩個專案合併?部分原因是WebDriver解決了Selenium存在的缺點(例如能夠繞過JavaScript沙箱,我們有出色的API),部分原因是Selenium解決了WebDriver存在的問題(例如支援廣泛的瀏覽器),部分原因是因為Selenium的主要貢獻者和我都覺得合併專案是為使用者提供最優秀框架的最佳途徑。
2.0
Selenium和Webdriver合併之後,就有了Selenium 2.0。
Selenium 2.0 = Selenium 1.0 + WebDriver
在Selenium 2.0中主推的是WebDriver,可以將其看作Selenium RC的替代品。因為Selenium為了保持向下的相容性,所以在Selenium 2.0中並沒有徹底地拋棄Selenium RC。
現在網上關於Selenium的教程,大多也是關於Selenium 2.0的WebDriver的。
3.0
2016年7月,Selenium3.0悄悄釋出第一個beta版。2016年10月13日,官方宣佈釋出Selenium3.0版本。
在Selenium 3.0中,徹底移除了舊的RC APIs,替換成了WebDriver APIs。
Selenium3.0只支援Java8版本以上。
Selenium3.0中的Firefox瀏覽器驅動獨立了,以前裝完selenium2就可以驅動Firefox瀏覽器了,現在和Chrome一樣,必須下載和設定瀏覽器驅動。
MAC OS 整合Safari的瀏覽器驅動。預設在/usr/bin/safaridriver 目錄下。
只支援IE 9.0版本以上。
Selenide
初看到這個詞的時候,是不是以為把Selenium拼錯了?我一開始也這樣認為,但是一搜才發現,並不是!
selenide is just a wrapper.
Selenide是webdriver的一個封裝,理論上一切WebDriver能做的Selenide都能做,並且現在只有java版本。
使用Selenide,你可以把注意力集中在實現業務邏輯上,而不用過多的考慮瀏覽器/ajax/超時等問題。
想要了解的更具體一點?
請參考官方文章:
http://selenide.org/2013/04/23/what-is-selenide/
Katalon
這是在Selemium相同的核心上構建起來的一個自動化測試工具。它是一個完全免費且易用的圖形化工具,使用者不需要任何程式設計基礎即可使用。
至於它和Selenium的具體區別?我懶得翻譯了,大家去看官方文章來具體瞭解吧。
官方文章:
https://www.katalon.com/resources-center/blog/katalon-studio-vs-selenium-based-open-source-frameworks/