sikulixを使ってみた

# sikulixを使ってみた

## SikuliXとは
画像認識を利用した、GUI操作自動化ツールです。開発環境であるIDEも付属しています。

## 検証環境
* windows 8.1 Enterprise
* Sikuli 1.1.2
* JRE 1.8.0_151 

## SikuliXのインストール

### 1. JREのインストール
SikuliXを利用するためには、JREが必要なので事前にインストールしておいてください。

### 2. SikuliX 1.1.2のダウンロード
[公式サイト](https://launchpad.net/sikuli/sikulix/1.1.2)にアクセスし、**sikulixsetup-1.1.2.jar**をダウンロードします。

![sikulixsetup.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/e37e40eb-9ad6-0e40-9410-fbd4e0772d39.png)


### 3. SikuliXのインストールフォルダの作成
ローカルに任意のインストールフォルダを作成します。  
※ コマンドはpowershellベースです。


  ```
  $ pwd
  C:\User
  $ mkdir sikulix_1.1.2
  $ cd sikulix_1.1.2
  $ pwd
  C:\User\sikulix_1.1.2
  ```

作成したフォルダに、手順2でダウンロードをしたjarファイルを配置します。


### 4. SikuliXのインストール
手順3で配置した、jarファイルをダブルクリックします。以下の画面が出現するので**はい**を選択します。

![sikulisetup1.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/c2d614df-ee75-7e01-2237-ec24ce7c2cf1.png)



インストールオプションを選択し、**Setup Now**をクリックします。基本は、1-Pack1で利用する言語(PythonまたはRuby)を選択しておけば問題ありません。

![sikulisetup2.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/6cd5fcb6-5280-d989-9d4a-425c5bbf81f1.png)


以下の画面が表示されたら、**はい**をクリックします。

![sikulix3.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/8e0219d3-0a0d-ea20-18bf-d39fd9763eca.png)



以下の画面でも、**はい**をクリックします。

![sikulisetup4.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/2ba9320c-1f91-8803-5fde-bc2164a6d833.png)


インストールの終了を待ちます。

![sikulix5.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/a572c75a-4e37-4f3a-dc49-e042c117f53e.png)


以下の画面が出たら、インストール完了です。

![sikuli6.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/7408b8ec-7dfd-5a30-6b3c-baf2698f5b9d.png)


### 5. 動作確認
インストールフォルダに作成されたファイルを確認します。**runsikulix.cmd**を実行します

  ```
  $ pwd
  C:\User\sikulix_1.1.2
  $ ls
  

    ディレクトリ: C:\Users\sikulix_1.1.2


  Mode                LastWriteTime         Length Name
  ----                -------------         ------ ----
  -a----       2018/08/15     17:20           2413 runsikulix.cmd
  -a----       2018/08/15     17:22           7831 SikuliX-1.1.2-SetupLog.txt
  -a----       2018/08/15     17:20       56759043 sikulix.jar
  -a----       2018/08/15     15:10        7853022 sikulixsetup-1.1.2.jar


  $
  ```

以下のIDEが起動すれば、動作確認終了です。

![runsilix.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/cc821e3d-f08f-4f3a-3195-037c62e81076.png)


## SikuliXでIEを操作して、qiitaでいいねとストックを押してみた。
今回は、Sikulixを利用してqiitaでいいねとストックを押す動作を自動化してみました。デモに用いる記事は、私が過去に投稿した[Go言語のインストール方法 Windows10環境](https://qiita.com/onionsoldier06/items/dfd5297fa32e17c457c0)を宣伝を兼ねて使います笑

### 1. IDEを起動し、[ファイル] > [新規作成]で新しいスクリプトファイルを作成します。
### 2. スクリプトを記述します。

  ```
  # winキー + rキー
  type("r", Key.WIN)

  # IEの起動
  paste("C:\\Program Files\\Internet Explorer\\iexplore.exe")
  sleep 1
  type("\n")

  # IEが起動して、Googleのロゴが表示されるまで待つ
  wait("1534322999272.png", 30)

  # アドレスバーにフォーカス
  type("e", Key.CTRL)
  sleep 1

  # URLを書き換え、アクセス
  type("a", Key.CTRL)
  sleep 1
  paste("https:\/\/qiita.com\/onionsoldier06\/items\/dfd5297fa32e17c457c0")
  sleep 1
  type("\n")

  # ページにアクセスして、ユーザ名が表示されるまで待つ
  wait("1534323439312.png", 30)
  sleep 1

  # いいねのクリック
  click("1534323475276.png")
  sleep 1

  # ストックのクリック
  click("1534323498331.png")
  sleep 1
  ```
IDEは以下のように表示されます。

![画像たち.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/ab77d85b-d0c2-521c-5db9-fc1a72a3286a.png)

#### **Tips** 
画像をファイル名で指定することも出来ますが、IDEの左側にある以下の部分をクリックすると、画面キャプチャで画像をプログラムに認識させることが可能です。（詳しくは実際に使ってみてください。）

![wait.PNG](https://qiita-image-store.s3.amazonaws.com/0/62976/e278e9b7-f950-d4a9-cfb8-5671764a865a.png)

### 3. スクリプトの実行
IDEの上にある、実行ボタンをクリックします。私の環境では無事動作しました。  
※環境によっては、微調整が必要かもしれません。

## 所感
簡単で直感的な記述でGUI操作が自動化できるので、とても便利であった。画像認識の精度やクリック位置などを微調整でき、RubyやPythonの文法がつかえるので、いろいろなことが実現可能である。

## 参考
* https://launchpad.net/sikuli/sikulix/1.1.2
* https://sikulix-2014.readthedocs.io/en/latest/