E2E 測試工具 SilkuliX -- 常用指令
我們從上一篇 <快速上手>沒有介紹到的 Regoin、Location、Offset開始吧!
Region:
字面上的意思為區域,限定一個範圍讓Sikuli進行圖像辨識
如下圖紅框範圍
拿"在雜亂桌面中打開資源回收桶"作為範例
步驟詳述
1. 定義用Region選定的範圍為 r
2. 這邊為方便說明,使用指令highlight(秒數) 讓選定的區域會出現(5秒)的紅框
3.在這個區域裡面指定的圖示點兩下
Location:
字面上的意思為位置,意思是指定一個由(x,y) 組成的座標
(x,y)的原點(0,0)為螢幕的左上
至於為什麼,請參考這篇文章
拿"打開資源回收桶"作為範例
步驟詳述
1. 還記得上一篇提到的 hover 【懸浮】指令嗎?
命令鼠標懸浮至螢幕的(412,230)位置
2. 滑鼠按兩下圖示
介紹最後一個offset功能之前
要先介紹sikuliX的另外一項功能"圖像吻合度"
SikuliX是建立在圖像辨識的基礎上運行
所以執行指令之前會需要先進行辨識
那要怎麼知道自己選擇的圖片有沒有吻合sikuliX的標準呢?
馬上透過下面的教學了解吧!
Matching preview
1.對要下達指令的圖片,滑鼠左鍵點一下
2.會開啟一個新視窗Pattern Setting,選擇分頁 Matching preview
3.進到介面後,上方為測試的初始畫面,下方拉桿為準確度,越往右(接近0.99)表示辨識的越準確
粉紅框標起來就是silulix辨識到的圖示
當然,可以把辨識準確度都拉到最右,但是這樣會無謂地消耗電腦效能,故我們取足夠辨識的程度就好
那讀者可能會問:為節省效能,把辨識度拉到最低就好啦!
辨識度太低的話,sikulix眼裡的chrome會長這樣:
顏色有深有淺,若就這樣下去執行,sikulix就會按照顏色深淺的順序操作
簡單來說,就是不精準
以上是圖像吻合度的簡單介紹
詳細可以參考這邊
Offset:
除了使用圖像吻合度來操作之外,還可以利用圖像裡的相對位置,讓測試可以更加精準
利用loaction的原理,讓選定的圖像成為座標原點(0,0)
命令滑鼠到offset(x,y)進行指令
舉個例子:
我們想要在一個搜尋框裡輸入google
find("search-bar.jpg"
click()
type("google")
1. 使用find 【尋找指定圖片】 搭配offset選定的座標
2. 鼠標移動到(x,y) 後點擊
3. 輸入指令,內容為my name
最後這邊提供些常用到的指令:
click:單撃
doubleClick:雙擊
rightClick:右鍵單擊
hover:懸浮
type:輸入文字
wait:等待指定圖樣出現
higlight:標示選定的區域
對沒有接觸過程式語言的使用者來說,這些指令已經足以應付大多數的使用情境
若使用者對程式語言有一點概念的話,也可以教他們一些簡單的應用
以勾選checkbox為例:
用這個來幫助我們這次的測試
用sikulix幫我們勾選所有的checkbox
結果如下:
這邊用了一個新的指令 findAll【找到全部符合條件的圖】
進階使用
因為Sikulix 是使用Jython語言 (什麼是Jython)
所以能夠與Python 結合,編寫出更有效率的測試腳本
又,Sikulix主要是由Java編成,所以也能導入JAVA後直接使用
import org.sikuli.script.*;
public class TestSikuli {
public static void main(String[] args) {
Screen s = new Screen();
try{
s.click("imgs/spotlight.png");
s.wait("imgs/spotlight-input.png");
s.click();
s.write("hello world#ENTER.");
}
catch(FindFailed e){
e.printStackTrace();
}
}
}
這邊用了一個新的指令 wait 【等待指定圖片出現】
聰明的各位腦中是不是出現了一些畫面:
例行性的操作流程
固定步驟的應用程式或網頁工具
指令重複性高的遊戲 .....
甚至也可以做很簡單的桌面監控程式
是不是開始想要動手試試看了呢?
衍伸閱讀:
SikuliX 如何辨識圖片的?
參考資料:
https://qiita.com/mima_ita/items/8f653042ac9140e5023f
https://launchpad.net/sikuli
https://www.jython.org/
http://sikulix.com/
https://github.com/RaiMan/SikuliX1