ぴぐノート

Good code is its own best documentation.

PowerShell

UIAutomationでアプリケーション操作を自動化しよう! その3

投稿日:2016年10月20日 更新日:

さて昨日の記事でスクリプトから電卓を起動させることができました。
今回の記事ではUIAutomationSpyというツールを使って電卓の情報を取得し、スクリプトから電卓に入力させるところまですすめましょう。

Hello Worldのようなとても簡単なスクリプトですが、UIAutomationSpyというツールを使用したりするので、極端に退屈な作業にはならないと思います。
また今回の記事を読んで、他のアプリケーションでも同じような処理をしてみると、より知識が深まりそうですね。

では早速初めていきましょう!!

簡単におさらい

まず初めに昨日の内容を簡単におさらいしてみましょう。

  1. [ Import-Module ]コマンドレットでUIAutomationをインポート
  2. [ Start-Process ]コマンドレットで「calc(電卓)」を起動
    「-PassThru」パラメータでプロセスのオブジェクトを取得しました。

…文にしてみるととっても簡単ですね。

では、冒頭でお話ししたUIAutomationSpyツールを使って電卓の情報をみていきましょう。

UIAutomationSpy

UIAutomationSpyは「Modules\UIAutomation\」に格納されています。

  1. 「Modules\UIAutomation\UIAutomationSpy.exe」を実行してみましょう。
    uiautomation_007
  2. 次に「Start」ボタンをクリック。
    するとカーソルの位置にあるボタンや入力欄の情報がUIAutomationSpyに表示されていると思います。
  3. この状態で電卓を起動し、各ボタンにカーソルを合わせてみましょう。
    uiautomation_008
    UIAutomationSpyの画面にいろいろと情報が表示されていますね。
    ここで特に注目したいのは、
     – Get-UiaButton -AutomationId ‘num2Button’ -Class ‘Button’ -Name ‘2’;

     – Get-UiaWindow -Class ‘ApplicationFrameWindow’ -Name ‘電卓’
    の部分です。

    つまり、電卓のウィンドウ名は’電卓’、電卓のボタン「2」はAutomationIdが「num2Button」で、クラスは「Button」、そして名前が「2」であることがわかりました。
    この情報をもとにスクリプトを作成してみましょう。

スクリプトを書いてみよう!

簡単ですがこんなところでいいでしょう。
さて、スクリプトを実行してみましょう。

電卓が立ち上がり、アッという間に「7」という結果が表示されたと思います。
と、ここで一つ注意点です。
私はWindows10環境で動かしているので、8.1や7では動作が異なるかもしれません。
実際にUIAutomationSpyを使って各ボタンの情報を確認してみてくださいね。

スクリプトの内容を確認しよう。

では簡単にスクリプトの内容を確認してみましょう。

  1. ここで電卓のウィンドウを特定しています。
    (本来は$processから取得できそうですが…勉強します。)

  2. 特定したウィンドウの-Nameが’2’のUI要素を探し出し、[ Invoke-UiaButtonClick ]でシングルクリックします。
    [ Out-Null ]パラメーターは取得した出力結果を破棄します。
    つまり、上記の命令で本来PowerShellに出力される内容を、出力しないように設定しています。

内容だけ見ると全然難しくないように感じますね。

まとめ

今回の記事でアプリケーションのUI要素(ボタンや入力欄)の情報を取得し、スクリプトから操作することができました。
あとはプログラムと同様に制御文を記述すれば延々と計算させ続けるようなことも簡単にできそうです。

では次回の記事で電卓に30秒間ほど延々計算させ続けるようなスクリプトを書いてみましょう。

// ——– ——– ——– ——– ——– ——– ——– ——–
UIAutomationでアプリケーション操作を自動化しよう! その1
UIAutomationでアプリケーション操作を自動化しよう! その2
UIAutomationでアプリケーション操作を自動化しよう! その3
UIAutomationでアプリケーション操作を自動化しよう! その4
// ——– ——– ——– ——– ——– ——– ——– ——–

スポンサーリンク

スポンサーリンク

-PowerShell
-

執筆者:

関連記事

【PowerShell/UIAutomation】アプリケーション操作のTips!

ここ数日PowerShellのライブラリ、UIAutomationを使ってアプリケーション操作自動化について記事を作成しました。 ボタンばかりのアプリケーションであれば十分ですが、実際には右クリックし …

UIAutomationでアプリケーション操作を自動化しよう! その4

昨日までの記事でスクリプトから電卓のボタンを押下させ、計算させることができました。 この記事でループを作成し、耐久テストのように延々と計算させ続ける処理に変更してみましょう。 ボタンを押下させる方法な …

UIAutomationでアプリケーション操作を自動化しよう! その1

技術者となって一番多く、そして面倒な作業はテストではないでしょうか。 単体テスト、システムテスト、結合テストとマイルストーンに従って、ちょくちょくテストしないといけません。 自分ひとりで開発していると …

UIAutomationでアプリケーション操作を自動化しよう! その2

前回の記事で、UIAutomationのDL、実行ポリシーの変更が完了しました。 今回はUIAutomationを使って電卓を起動させてみましょう。 私が活用した場面としては電卓ではなく、開発した映像 …