ぴぐノート

Good code is its own best documentation.

PowerShell

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

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

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

ボタンを押下させる方法などはもう分かりましたので、あとは制御文を書くだけです。
この記事に興味を持つような方であればとても簡単に書くことができると思います。

動かし方さえ分かれば、あとは自動化させたいアプリケーションのUI要素を検索し、行いたいルーチンを書くだけでちょっとした耐久テストくらいであれば簡単に作ることができると思います。

では、ループ部分を追記し動作させてみましょう。

簡単におさらい

まず、昨日までに記述した内容を確認してみましょう。

  1. [ Import-Module ]コマンドレットでUIAutomationをインポート
  2. [ Start-Process ]コマンドレットで「calc(電卓)」を起動
    「-PassThru」パラメータでプロセスのオブジェクトを取得しました。
  3. [ Get-UiaWindow ]コマンドレットで電卓のオブジェクトを取得
  4. [ Get-UiaButton ]で電卓($window)の[ 2 ]という名前のボタンを探します。
  5. そして、[ Invoke-UiaButtonClick ]で押下。
    ここでPowerShellに出力されるはずの結果は[ Out-Null ]で破棄しています。

全く難しくないですね。

無限ループを作って延々と計算するように変更しよう。

上記の内容では、「等号」ボタンを押下してスクリプトが終了します。
耐久テストのように24時間延々とボタンをクリックさせてみましょう。

はい、たったこれだけです。
「等号」ボタンを押下させる処理を、「プラス」を押下するように変更し、whileループで継続条件を真、つまり延々と繰り返すように記述しています。

では実行させてみましょう。

いかがでしょうか、’2+5+2+5+2+5+2+5+2+…..’と延々繰り返す処理ができていると思います。

まとめ

簡単にまとめると、

  1. UIAutomationをインポートし、
  2. テスト対象のアプリケーションを起動させ、
  3. UIAutomationSpy.exeで調べたUI要素を操作する

この繰り返しで簡単に自動化させることができます。

耐久テスト以外でも知識が増えれば色々と使えそうなツールなので、ぜひPowerShellを使っていってみてくださいね!

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

スポンサーリンク

スポンサーリンク

-PowerShell
-

執筆者:

関連記事

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

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

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

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

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

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

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

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