引子
之前就有個想法,整理一下自動化測試的相關工具,開始的時候以為不復雜,但是只是簡單的列表似乎又單調了些,沒什么意義。如果加上介紹和相關說明,放在一篇文章里,又會太過雜亂。
干脆還是先從細節開始,寫個系列文章來介紹工具,后面再做整理,可能會清楚一點。
從哪兒開始呢,要不咱先嘮嘮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/
本文也同時發在我的個人博客上,地址:https://mmcatt.github.io/2018/06/19/selenium-selenide-katalon/