Katalon Recorder初探

原因

最近工做中,有大量web頁面上的重複操做,實在麻煩,就想利用selenium ide錄製出一些操做集合,以便複用。新版本的selenium ide 3目前只支持firefox最新的版本,並且代碼導出功能還不完備,就想試試舊版本2.7。爲了能使用2.7版本,還安裝了舊版本的火狐瀏覽器。弄好後,發現不太好用,錄製起來很不順手。因而就想找找替代方案。搜到了兩個結果,一是kantu,另一個是katalon recorder。我以爲katalon recorder很順手,也的確爲我省了很多事,做一下簡單記錄。html

簡介

katalon recorder是基於selenium的瀏覽器插件,支持火狐和chrome。它能夠錄製web頁面的操做,而且能實現基本的數據驅動測試,還能導入腳本,可說是體量雖小,功能足夠。對功能有更高要求的,還能夠去試試同出一門的katalon studio,也是免費軟件,支持web和mobile端的測試,並集成了許多強大的功能。jquery

安裝後界面以下:git

建立test suite後,裏面能夠包含多個測試用例(test case),每一個測試用例又有若干步驟(command)。點擊record,能夠快速對當前的活動頁面進行錄製,點擊pllay則是回放。web自動化測試費時費力的一部分就是元素定位,錄製正是解決這一問題的利器。錄製完成後,點擊右上角的export,還能夠導出不一樣語言的代碼,方便進行下一步的開發。github

每一個測試步驟分爲三部分,分別是coommand,target和value。錄製後,能夠本身看看命令是什麼樣子的,也能夠選擇元素的定位方式,避免默認的定位方式沒法在其它頁面複用(好比換了登陸用戶,經過登陸用戶名文原本定位顯然就沒法複用了)。web

官方有提供sample suite,包含了recorder的各個功能,能夠下載導入後查看。chrome

 

工做中遇到的問題

1.頁面上有一些input輸入框,在本身測試時一般是輸入固定的值,因而就想能不能錄製下來,省些力氣。瀏覽器

 

首先用了錄製功能,但發現一直無效。查看步驟,發現是定位到input後,以type方法鍵入值。ide

如圖:工具

因而我想到能不能模擬本身實際操做的步驟,來鍵入值呢?也就是使用sendKeys方法,鍵入想用的值後,按下Enter鍵,再點擊頁面空白處。測試

這樣作,的確是值能輸進去,可是再操做時,值又會自動消失。查了一圈後,以爲應該是輸入框要有input或者change事件發生時,纔會更改綁定的值。

Katalon Recorder支持js腳本,也試試這個吧。(jquery有段時間沒用,又稍稍回憶了下,徹底忘了對jquery對象取第0個元素就是原生DOM對象,卡了一小會兒)

代碼以下:

$('#product_list_table2 > tbody').find('td:nth-child(2) > input').each( function(){ $(this)[0].value = '100'; })

因爲要輸入的值在表格中,只要遍歷表格的子元素,找到輸入框,改變其值便可。

成了嗎?是寫進去了,但同樣去操做其餘地方值又會變爲原來的值。

又查了一番,應該再改變值後把input或change事件觸發才行,代碼以下:

$('#product_list_table2 > tbody').find('td:nth-child(2) > input').each( function(){ $(this)[0].value = '100'; this.dispatchEvent(new Event('change')); })
// 不知道爲何,這裏觸發input事件沒用,必需要觸發change事件才行。而另一些input卻得綁定input事件,有些不解

再進一步,能夠把要輸入的值參數化,在腳本中以${param}引入便可。如圖:

之後再須要對input輸入值的地方,均可以用相似的方法處理。

 

2.又用了一段時間,發現仍是有場景能夠實現自動化。比方說,有一個訂單,須要四層審批,每級審批的人都不同,但經過管理員查看流程,均可以切換到相應的角色。

因而就把流程錄製了下,拿另一個訂單試驗了下,果真沒那麼容易就能夠。主要有幾個小問題:

  1)找訂單時,是根據位置定位的,一直點擊的是列表中的第一個。對於新訂單倒還好,可是若是要審批舊單子,這個方法就行不通了

  2)有些點擊動做太快。頁面元素並非一下全都加載好的,單純以元素出現判斷是否點擊,並不可靠。

  3)若以審批人分類,每一個審批人都要單獨錄一遍流程,太過麻煩

  4)頁面上根據訂單金額不一樣,會出現不一樣的彈框。不點擊的話,就沒法繼續。

爲了讓錄製的腳本更加靈活,我作了如下調整:

  1)參數化。將訂單號存儲起來,每次再也不是點擊訂單列表的第一個,而是先進行搜索,出現結果時,再點擊第一個,這樣就能夠保證進入想要審批的訂單。

             另外也將審批人蔘數化,這樣就避免重複錄製,更靈活也更省事。

             可以使用store方法,target是要存儲的值,value是參數名。以後要應用,能夠${param}的形式引用。

   

 

  2)增長暫停。在一些數據交互多的頁面中增長暫停時間,好比加載訂單、搜索這些場景都應當添加,讓腳本更穩定。時長從500毫秒到1500毫秒不等。

       可以使用pause方法,target爲要暫停的時間,單位是毫秒。

          

    3)增長元素是否存在的判斷。對於不是任什麼時候候都出現的彈框,可先判斷其是否存在,是則點擊,不然跳過,讓腳本更靈活。

            Katalon Recorder中並不能簡單使用if判斷,由於if只能更布爾表達式。這也是簡易工具的限制,但也是其它方式實現。

            我用的方法是先用storeElementPresent方法,判斷元素是否存在,存入變量中,再放到if的布爾表達式中,中間放入要執行的語句。

           

  至此腳本就修改完成了,使用起來也很穩定,填入參數後,再也不須要人工干預。

       到這一步,再往下走,能夠將幾個審批人的流程合併到test suite,這樣一次點擊,全部審批流程均可以完成。

   

小問題

每一個測試用例都有隱含的第一步,就是跳轉到katalon的主頁,導出代碼後,就會裏面設置的base url是katalon主頁。每次執行都會先跳轉到這個頁面,而後纔會往下走,會耽擱一小會兒。目前尚未找到設置base url的地方,解決方法是加載主頁幾秒後,中止加載,就會跳轉到本身設定的頁面。

參考

katalon主頁:https://www.katalon.com/

katalon文檔:https://docs.katalon.com/katalon-studio/docs/index.html

sample suite下載頁面: https://github.com/katalon-studio/katalon-recorder-samples

相關文章
相關標籤/搜索