May 2, 2015

在 OSX 10.10.3 Yosemite 上安裝 SikuliX

最近想用 Sikuli 寫自動化程式,卻發現 SikuliX 無法安裝在 OS X Yosemite 上面。找了許多資料才發現解決方法。

本文紀錄如何在在 OSX 10.10.3 Yosemite 上安裝 SikuliX。


目錄


(一) 背景知識

1. 什麼是 Sikuli

Sikuli 是 vgod 在 MIT 所參與的一個 Project,是個可快速寫出圖形自動化控制的工具,Sikuli 是 SikuliX 的前身。

以下介紹引用自 使用 Sikuli IDE 在 Intel® 架構裝置上自動驗證遊戲

Sikuli 是一種視覺化技術,同時也是一種利用螢幕截圖影像來自動化及測試圖形化使用者介面的簡易方法。Sikuli 最初是由麻省理工學院 (MIT) 的使用者介面設計團隊開始研發,這是一項開放原始碼的研究計劃。第一版 Sikuli 包含 Sikuli Script 和 Sikuli IDE,前者適用於 Python 的視覺指令碼 API,而後者則是用於撰寫視覺指令碼的整合開發環境。Sikuli Script 可將您在螢幕上看到的所有東西自動化,無需內部 API 支援。因此,它不僅能控制網頁,還能控制在 Windows*、Linux*、Mac*、OS X 上執行的桌面應用程式,甚至能控制透過 虛擬網路運算 (VNC) 執行的 Android* 應用程式。

2. 什麼是 SikuliX

Sikuli was started somewhen in 2009 as an open-source research project at the User Interface Design Group at MIT by Tsung-Hsiang Chang (graduated in 2012) and Tom Yeh (now head of Sikuli Lab at Computer Sciences at Univeristy of Colorado).
Both during 2012 left the project on the level Sikuli-X-1.0rc3. In late 2012 I decided to take over the further development and support and name it SikuliX. – Raimund Hocke

在 vgod 等人離開 Sikuli project 後,Raimund Hocke aka RaiMan 接手持續開發 Sikuli,並更名為 SikuliX


(二) 在 OSX 10.10.3 Yosemite 上安裝 SikuliX

你可以跟我一樣在下面這些網站找好幾個小時:

最後發現這些版本的 SikuliX 都無法在 OSX 10.10.x Yosemite 上執行。

1. Christopher Green (chriszold) 的解法

正確的方法隱藏在這篇討論:
[ALL VERSIONS] IDE does not start up on MAC OSX 10.10 Yosemite — 1.1.0 works (RC3 + 1.0.1 do not) 的倒數第三篇。

或直接參考這篇連結 Comment 10 for bug 1362011

以下引用自 Christopher Green (chriszold):

If you have OSX Mavericks or later, go to the http://nightly.sikuli.de/ page (the nightly builds page), ignore everything but the part that reads:

“The only file needed to download:
sikulixsetup-1.1.0 (store and run in an empty folder)”

… and download that sikulixsetup file.

Put this in its own folder, call the folder “Sikuli”.

Run the setup file. Choose option 1, add the jruby option. Install and wait for downloading and installing to do their thing.

You should get the “Hallo from Sikulix.texstSetup. Python Scripting SikuliX seems to be working!” message (maybe two of these).

You can now move the Sikuli folder containing the app, the “Downloads” folder and the setup file to the standard /Applications/ folder. You can delete both the “Downloads” folder in the Sikuli folder and the original setup jar file.

It’s probably a good idea to make a new folder called “Scripts” and keep all your sikuli script files in there. It is a personal preference (some might like that to be in ~/Documents/, for example), but I like having this in the Sikuli folder so that everything is located within a simple hierarchy.

2. 步驟

  • http://nightly.sikuli.de/
  • 找到 The only file you need to download 那一行下面的 download by clicking this link, store in an preferably empty folder and run by doubleclicking the jar
  • 下載該連結並放在新創建的空資料夾 download/sikuli_nightly
  • 在 MAC 的 finder 內,切換到 download/sikuli_nightly 資料夾 。
  • 不可更改檔案名稱。
  • 按住 control鍵 + 右鍵,開啟未受信任的檔案。
  • 依照自己的需求勾選 Pack,我選擇 pack 1,並勾選 Jython 跟 JRuby。

  • 出現確認要求,按下 yes。

  • 程式開始自動下載各 package。

  • 程式開始自動 creating jars。

  • 出現 Hallo from Sikulix.texstSetup. Python Scripting SikuliX seems to be working!



  • 執行並測試 SikuliX。
  • 都沒問題的話,download/sikuli_nightly 內的檔案就可以刪掉了。

(三) 執行並測試 SikuliX

安裝程式會將 SikuliX 安裝在 ~/Library/Application Support/Sikulix

有兩種方式可以撰寫 SikuliX 專案:

  • 用 SikuliX IDE 撰寫。
  • 用其他文字編輯器撰寫。

有三種方式可以執行 SikuliX 專案:

  • 用 SikuliX IDE 執行。
  • 在 Terminal 內用指令執行。
  • 在 finder 內點兩下執行。

1. 使用 SikuliX IDE 撰寫與執行

按下 F4 叫出 Launchpad,執行 SikuliX IDE (Sikuli.app),大約要花 6~10 秒才能完全開啟。

然後參照 Sikuli Tutorial 或其他 Sikuli 教學寫一個簡單的 Sikuli 程式。

按下執行看看是否能正常執行。

2. 用其他文字編輯器撰寫 SikuliX 程式

建立一個叫做 mySikuli 的 Sikuli project 後,我們會在資料夾內看見 mySikuli.sikuli 這個專案。

但它其實不是個檔案,而是個資料夾。

Sikuli 專案其實是由 Python 檔、圖片檔與其他檔案所構成的,下面兩種方法可以在 OS X 觀看該資料夾內檔案:

  • 用 terminal
cd path_to_your_project/mySikuli.sikuli/
  • 用 finder
前往 -> 前往資料夾 -> path_to_your_project/mySikuli.sikuli/mySikuli.py

進入 Sikuli 專案的資料夾後,即可編輯主要的 Python 腳本,編輯方式與一般撰寫 Python 相同。

3. 執行 SikuliX 程式

A. 使用 SikuliX IDE

如上述。

B. 使用 Terminal 指令

/Applications/SikuliX.app/run -r path_to_your_project/myScript.sikuli

更多選項請參考官方文件:How to run Sikuli from Command Line

C. 使用 Finder

直接在 finder 點兩下 myScript.sikuli 即可。

注意:直接在 finder 點兩下 myScript.sikuli 是執行該 Sikuli 專案,並不是編輯


(四) SikuliX 的讀取速度很慢?

從 Launchpad 執行 SikuliX IDE,大約要花 6~10 秒才能完全開啟;

即使是在 Terminal ,SikuliX 也要花 6~8 秒才能啟動並執行 script,速度有點慢?

A:
請參考這篇討論:Startup of commandline sikuli is Slow
仕様です。
SikuliX 的設計就是這樣。