SikuliX:UIAutomationを使用する

UIAutomationの使い所

  • Windowsネイティブアプリで使用(WebアプリはSeleniumを使用)
  • SikuliXは画像や座標で項目の位置を特定するので開発機と実行機のモニター解像度が異なると処理に失敗することがある。UIAutomationではUI要素を名前やIDで特定でき、値も直接セットできるので失敗がなくレスポンスも良い。ただ、アプリによってはUI要素が取れないことがある。

シナリオ

  • Windows10のSikuliXでUIAutomationを使用する
  • C:¥UIAutomationにインストールする
  • インストール後、サンプルコードを実行し動作確認する
    • エクスプローラーを起動し、表示タブ>隠しファイルにチェックを付ける
※UIAutomationはPowerShellのスクリプトを別に作成し外部コマンドとして実行する

UIAutomationのインストール

UIAutomationのダウンロード
ページ最下部までスクロールし「UIAutomation.0.8.7B3.NET35.zip」をダウンロード&解凍しフォルダ名をUIAutomationに変更後、C:\にコピー
※この例ではC:\UIAutomationだがどこでも良い
 

サンプルコード

PowerShellスクリプト:C:\ps\Set-HiddenFiles.ps1
Param($p) # 引数
Import-Module C:\UIAutomation\UIAutomation.dll
[UIAutomation.Preferences]::highlight = $false
$ErrorActionPreference = "Stop" # 例外をキャッチするためのおまじない
try {
    # エクスプローラーのウィンドウ
    $wndw = Get-UiaWindow -Name 'エクスプローラー'
    # 表示タブをクリック
    $wndw | Get-UiaTabItem -Name '表示' | Invoke-UiaTabItemClick | Out-Null
    # 隠しファイルにチェックを付ける
    $wndw | Get-UiaCheckBox -Name '隠しファイル' | Set-UiaCheckBoxToggleState $p | Out-Null
} catch [Exception] {
    return 9
}

SikuliXスクリプト 内容:エクスプローラーを起動し、表示タブ>隠しファイルにチェックを付ける
import sys

reload(sys)
sys.setdefaultencoding("utf-8")

# PowerShellスクリプトの保存先
CMD_PATH = u"C:\\ps\\"
# PowerShellコマンドのベース
BASE_CMD = "powershell -NoProfile -ExecutionPolicy Bypass " + CMD_PATH
# コマンドセット
cmd = BASE_CMD + "Set-HiddenFiles.ps1 1" # 引数の1はチェックON 0(ゼロ)はOFF
# エクスプローラー起動(ショートカットキー:Win + E)
type("e", Key.WIN)
# コマンド実行
rtn = run(cmd)
if rtn == 9:
    popup(u"powershellでエラー")

実行結果