一、介紹以及安裝
1、Sikuli的介紹
Sikuli是一個利用圖片進行可視化檢查和自動化圖形界面的技術,一個方便通過截圖寫出可視化腳本的集成開發工具Sikuli IDE,腳本可以不經過api的編輯器直接自動化搜索到任何在你電腦屏幕上可以看見的東西。
你可以利用程序控制一個web的頁面,或者在各種操作系統上運行的桌面程序。
2、安裝
在官網可分別下載MAC OS X 、Windows和Linux操作系統提供的安裝文件以及安裝方法介紹。
我先提供一下簡單的方法:
百度網盤鏈接:鏈接: https://pan.baidu.com/s/1I75kMKR43pmq05KcXmcwIg 提取碼: 99j5
下載至本地、安裝java jdk ,sikulix要求jdk8.0+。再行安裝python,我這里安裝的是python2.7
全部安裝完畢之后可直接運行 runsikulix.cmd
建議大家還是自行從官網下載安裝、了解全部的執行過程
官網地址:http://www.sikuli.org/download.html
Sikuli頁面布局
從上面的截圖可以看出Sikuli頁面非常簡潔易懂,頁面上划分了多個區域,我們一般使用IDE提供的操作方法就可以完成一個程序的自動化測試工作了、當然我們可以利用更多的方法來進行拓展。
之前寫了一小段的測試用例,使用起來不還是很方便的;
但是也總結了幾點:
1、多個屏幕對程序運行的影響還待考察(案例編寫必須嚴格在一個屏幕下進行,否則復雜度大大提高,我把notes扔到另外一個屏幕,結果腳本報錯) 另外,截圖要用他自帶的工具比較方便
2、頁面有相同圖標的情況下需要手動跳轉點擊的位置(兩個相同的圖標的情況下,就代表你不能更換圖標的位置)
3、規模腳本如何編寫規范?首先,桌面主題就要統一,否則可能對截取造成問題
以如下問題為例子,經我的windows換用windows經典主題后,我在工行主題上截取的圖,就無法使用了,腳本無法運行
4、桌面上存在小工具遮擋的時候也不行(你要運行點擊的圖標或者定位上面不能有任何的遮擋物,必須保證頁面只有你的一個應用被打開)
3、實際操作:
在使用的過程中對工具所能提供的快捷方式都進行了試驗,最常用的方法總結如下:
鍵盤操作,輸入
type() #輸入內容 (不建議使用,可以由於輸入法的問題導致不可預知的錯誤)
paste () #文本輸入(建議使用,單純的指數復制的你的內容並進行粘貼)
頁面斷言,查找數據:
wait() #設置等待時間
exists() #判斷等待頁面元素是否存在
鼠標動作:
click() #點擊事件--單點
doubleClick() #點擊事件--雙擊
rightClick("") #點擊事件--鼠標右鍵點擊
dragDrop("1606202686079.png", "1606202694506.png") #將第一個元素拖動至第二個元素位置
既然我們進行了測試那么就也需要進行斷言
if exists("查看的內容圖片"):
click("查看的內容圖片")
print"斷言的內容"
else:
print("斷言的內容")
頁面如果不存在該內容那么腳本就自然的會進行跳過的繼續執行下一步的操作。
4、鍵盤操作
記錄了SikuliX中按鍵操作的方法。
控制字符
鍵名 | sikuliX中的命令 |
---|---|
Shift | type(Key.SHIFT) |
Ctrl | type(Key.CTRL) |
Alt鍵 | type(Key.ALT) |
Tab(制表符) | type(Key.TAB) |
大寫鎖定 | type(Key.CAPSLOCK) |
輸入 | type(Key.ENTER) |
刪除 | type(Key.DELETE) |
退格鍵 | type(Key.BACKSPACE) |
插入 | type(Key.INSERT) |
Home | type(Key.HOME) |
End | type(Key.END) |
ESC | type(Key.ESC) |
空格 | type(Key.SPACE) |
視窗 | type(Key.WIN) |
換頁 | type(Key.PAGE_UP) |
向下翻頁 | type(Key.PAGE_DOWN) |
列印畫面 | type(Key.PRINTSCREEN) |
數字鍵盤鎖 | type(Key.NUM_LOCK) |
滾動鎖 | type(Key.SCROLL_LOCK) |
F1 | type(Key.F1) |
F2 | type(Key.F2) |
F3 | type(Key.F3) |
F4 | type(Key.F4) |
F5 | type(Key.F5) |
F6 | type(Key.F6) |
F7 | type(Key.F7) |
F8 | type(Key.F8) |
F9 | type(Key.F9) |
F10 | type(Key.F10) |
F11 | type(Key.F11) |
F12 | type(Key.F12) |
光標鍵:向上 | type(Key.UP) |
光標鍵:向下 | type(Key.DOWN) |
光標鍵:左 | type(Key.LEFT) |
光標鍵:向右 | type(Key.RIGHT) |
向上移動光標兩次 | type(Key.UP * 2) |
向下移動光標兩次 | type(Key.DOWN * 2) |
向左移動光標兩次 | type(Key.LEFT * 2) |
向右移動光標兩次 | type(Key.RIGTH * 2) |
按特定鍵 | KeyDown(Key.*) 需要使用Region()進行區域設置。 |
釋放特定鍵 | KeyUp(Key.*) 需要使用Region()設置區域。 |
快捷鍵使用
常見操作 | 快捷鍵 | sikuliX中的命令 |
---|---|---|
復制 | Ctrl + C | type(“ c”,Key.CTRL) |
剪下 | Ctrl + X | type(“ x”,Key.CTRL) |
貼上 | Ctrl + V | type(“ v”,Key.CTRL) |
搜索 | Ctrl + F | type(“ f”,Key.CTRL) |
打印 | Ctrl + P | type(“ p”,Key.CTRL) |
撤消 | Ctrl + Z | type(“ z”,Key.CTRL) |
重做 | Ctrl + Y ;Ctrl + Shift + Z | type(“ y”,Key.CTRL);type(“ z”,Key.CTRL + Key.SHIFT) |
關閉標簽 | Ctrl + F4 | type(Key.F4,Key.CTRL) |
還原標簽 | Ctrl + Shift + T | type(“ t”,Key.CTRL + Key.SHIFT) |
瀏覽器緩存刷新(強制刷新) | Ctrl + F5 | type(Key.F5,Key.CTRL) |
關閉窗口 | Alt + F4 | type(Key.F4,Key.ALT) |
最小化所有窗口 | Windows + M | type(“ m”,Key.WIN) |
顯示桌面 | Windows + D | type(“ d”,Key.WIN) |
最小化窗口(當窗口為正常大小時)恢復為原始大小(當窗口為最大化時) | Windows +光標鍵:向下,如果最大化,請執行上述兩次。 | type(Key.DOWN,Key.WIN) |
窗口最大化 | Windows +光標鍵:向上 | type(Key.UP,Key.WIN) |
切換活動窗口 | Windows + Tab;Windows + Shift + Tab | type(Key.TAB,Key.WIN);type(Key.TAB,Key.WIN + Key.SHIFT) |
啟動任務管理器 | Ctrl + Shift +ESC | type(Key.ESC,Key.CTRL + Key.SHIFT) |
啟動資源管理器 | Windows +e | type(“ e”,Key.WIN) |
運算符
運算 | sikuliX中運算符 |
---|---|
加成 | + |
減法 | – |
乘法 | * |
除 | / |
余數計算 | % |
除數的整數部分 | // |
A的b次方 | A ** B |
A的負數 | -A |
邏輯或 | or |
邏輯與 | and |
否認 | not |
a大於b | a> b |
a小於b | a <b |
a小於或等於b | a <= b |
a大於或等於b | a >= b |
a等於b | a== b |
a不等於b | a!= b |
就介紹到這里了、有什么不足的地方,望批評指正,歡迎交流