前言
最近由於在工作中需要通過Web端的功能進行一次大批量的操作,數據量大概在5000左右,如果手動處理,
完成一條數據的操作用時在20秒左右的話,大概需要4-5個人/天
的工作量(假設一天8小時的工作里除去休息時間,我能在6個小時里像機器人一樣保證每20秒處理一條數據)。
顯然,作為一個程序員,我是不可能讓這樣機械化的操作浪費我寶貴的生命的。第一反應是想到了若干年前被我用來做Web前端測試和寫頁游外掛的神器Selemium
(當時頁游真的很火,我用自己寫的腳本,在只花了很少錢的情況下,用了不到3周時間就已經是大神排行榜前10了)。但在我印象中,Selemium
需要編寫大量的代碼來完成一個腳本,調試過程也較為繁瑣,這么多年過去了,我在想會不會有更新更好用的工具出現呢?於是Google了一下之后,發現了Katalon
。
Katalon VS Selemium
Katalon
是在Selemium
相同的內核上構建起來的一個自動化測試工具。官方給出的兩者的對比文檔:https://www.katalon.com/resources-center/blog/katalon-studio-vs-selenium-based-open-source-frameworks/。
我綜合自己這兩天使用的情況,大概可以總結為如下幾點:
-
Katalon
的用戶群體范圍更廣,用戶甚至不需要任何編程基礎,只需要知道自己想做什么即可,而Selemium
的用戶群體是開發或者測試人員 -
Katalon
是一個非常易用的圖形化的工具,但它竟然是免費的(官方說法是Completely free • Built with Heart
),並且是免安裝版本,下載解壓就能直接使用。而Selemium
需要安裝運行環境、語言驅動等等較為繁瑣的步驟 -
使用
Selemium
的時候,可能需要經常查詢API文檔以找到自己想要實現的功能,而Katalon
大部分時候不需要(當然本身也是有非常完善的API文檔的) -
專業人員通過
Selemium
可以完成各種復雜的功能,Katalon
也可以,Katalon
用的是Java
和Apache Groovy
作為其腳本開發語言 -
性能方面,
Katalon
比Selemium
差一點 -
Katalon
提供了Spy
和Record
兩個讓構建測試變得異常簡單的神級
功能,以及很多內建的非常實用的功能(比如從文件、數據庫等數據源獲取數據填充到測試變量中)
基礎用法
新建項目
方法1:Spy
用Spy Web功能添加對象到對象倉庫中
為了更直觀,我做了一張動圖,完成了Spy的基本演示,其中包含了如下步驟:
-
打開百度搜索首頁
-
定位搜索框,將其捕獲(按組合鍵
Shift + `
) -
確認捕獲的元素
-
將搜索框保存到對象倉庫中
-
查看捕獲的所有信息
Spy
的作用是可以在較為復雜的頁面上或者當操作人員不會寫代碼的時候,需要操作元素時,用Spy
可以非常方便的做到。上述所有步驟的動圖如下:
新建Test Case
這個設計的步驟很簡單:
-
打開百度首頁
-
在輸入框里輸入katalon
-
確認搜索
-
展示搜索結果
過程動圖如下(整個過程中並沒有對Chrome做任何人工操作):
方法2:Record
上面的方法,相對於初學者來說,已經是“復雜”的了,畢竟我們先手動Spy
出我們想操作的元素。其實,如果只是簡單的通過百度搜索某個關鍵字這樣的簡單流程,完全可以用Katalon
自帶的Record Web
功能,詳見如下動圖:
Record Web
功能會把你對瀏覽器做的所有操作,全程錄制並保存起來,當然如果有需要,也可以按自己的需求對錄制好的步驟做一些調整。
編輯腳本
如果你是個專業用戶,你可以可以直接通過編輯腳本來寫測試用例。比如在上述用例的基礎上,我有如下需求變更:
-
我希望用戶點擊
搜索
按鈕,而不是直接通過敲擊回車
完成搜索 -
我希望在搜索結果出來之后,自動打開搜索結果的第一項
過程如動圖所示:
具體過程如下:
-
手動創建按鈕對象
btnSearch
-
替換
searchByRecord
實驗中的回車事件,將其變為點擊btnSearch
-
點擊一個搜索結果,但是此時我不知道第一個搜索結果的元素是什么,因此通過
Spy
找到元素的XPath
值 -
用
XPath
值創建搜索結果的鏈接對象 -
在腳本代碼中加入
WebUI.click
觸發點擊事件
后話
Katalon
在使用上還是非常簡單的,效率也非常高,令人眼前一亮。本文中的例子還是比較簡單的,在實際場景中肯定還要復雜的多。比如我在本文開頭說的那個工作中的任務,我用腳本跑花了5-6個小時。在此過程中,我只要時不時看一下進程是不是出現卡死或者異常的情況,其余時間完全可以做自己的事(如果不想打開真實的瀏覽器運行代碼,也可以直接使用Chrome(Headless)
或者Firefox(Headless)
菜單)。
關於一些高級和實用功能,我將在后續補充。