1. 程式人生 > >sikuli--前端自動化操作的神器

sikuli--前端自動化操作的神器

sel div 括號 ref 自動 可能 優勢 什麽 .net

前端自動話操作應用很廣泛,從網購秒殺活動實現自動化搶購,到區塊鏈貨幣高頻交易前端腳本編寫(非合作交易所不提供api的情況下)。

自動化的流派分為2類,一類是對DOM對象進行解析的,這個是主流,但是受特定平臺的限制,而且一定目標前端代碼變了,自動化腳本一般都要重寫。

另一個就是近年來出現的“非主流”--sikuli。它是通過類似圖像識別的原理進行自動化操作的,不受目標前端代碼修改的影響。

之前在工行因為自動化測試的原因,研究過一下sikuli,記錄在這裏:

相比selenium,簡直是神器:

1.不僅能夠用在web上,而且能用在exe上,估計新終端也能夠用(終於解決了這個最大的問題)

2.腳本編寫的易學性、工具的易用性還不錯

3.從目前情況看工具還是穩健的,安裝也方便(我部的jdk普遍是1.6左右,正是推廣的黃金時期)

下載安裝:

http://www.sikuli.org/download.html 註意:目前其僅主持32位的1.6版本的jdk,下載的包很小20m,解壓後就可以運行,目前最新版本是r930

運行時註意事項:

1.有個很好地“迷惑”或者提升執行通過率的方法,就是打開那個html頁面,還有不能打開程序目錄,因為哪裏有各種要用的圖標。。

2.有多個屏幕對程序運行的影響還待考察(案例編寫必須嚴格在一個屏幕下進行,否則復雜度大大提高,我把notes扔到另外一個屏幕,結果腳本報錯) 另外,截圖要用他自帶的工具比較方便

3.註意python語法, 沒有類型if等不用括號用縮進(科技極簡主義) java要編譯,而python不用 python沒有class和main函數

4.最危險的是“起飛”階段 如何打開一個應用?

能想象一下,如下兩個圖標的不同,就讓腳本無法運行(j見附圖)

5.大規模腳本如何編寫規範?首先,桌面主題就要統一,否則可能對截取造成問題

以如下問題為例子,經我的windows換用windows經典主題後,我在工行主題上截取的圖,就無法使用了,腳本無法運行

因為界面現在看起來已經是這樣了

但是用win7透明主題,倒是可以運行腳本的

(註意顏色深度的變化,所以sikuli有一定的變化兼容性,但是盡量不要有這方面的嘗試)

6.桌面上存在小工具遮擋的時候也不行

總結:不能有遮擋 不能有多屏 不能有截圖

技術分享圖片

sikuli的代碼簡單到什麽程度呢?下面這個截圖可以說明一切,這是個我寫的郵箱自動登錄的代碼,幾乎是人都可以看懂,這是sikuli最大優勢:

技術分享圖片

那麽問題來了?現在是圖形的識別,如果做斷言呢?現在這個工具還只是操作自動化的工具

圖形斷言:可以使用exists()來判斷操作成功後的打勾是否存在

文字斷言:需要使用OCR功能,

首先,sikuli絕對有OCR功能,他的截圖命名,就是用識別後的文字命名的

sikuli的好處:

1/代碼的易讀性(readableusable)

2/易讀性帶來的可傳承性(用來培訓和教學非常不錯,傳統的教程都說stepby step,而且配圖,關鍵是這兩者sikuli都有,而且還能夠機器執行)

以前的說明書,用命令行的,都是描述非常清楚,但是圖形界面的就麻煩了;很多時候采用截取全圖的方式,那樣說明書的體積又太大了

3/電腦視覺的延伸, 看自己輸出生成的畫面,更加智能化

4/可擴展性 這個目前和watchman是一樣的都說基於通用的腳本語言,可以使用腳本語言的函數庫(python+java)

sikuli--前端自動化操作的神器