UIテストの自動化をサポートするコマンドレット

UIテストの自動化

2007年12月のMSDNマガジンにPowerShellの記事が掲載されています。

ここでは、.NETアプリケーションに対して、「フォームやコントロールのハンドルを取得」したり「コントロールにクリックイベントを発生」させるコマンドレットが紹介されています。
これらのコマンドレットを利用すると、PowerShellからUIを操作して、UIテストを行うことができます。

コマンドレットの内部処理

コマンドレット内部では、P/Invokeを使用して以下のWin32APIをコールしています。

  1. FindWindow
  2. FindWindowEx
  3. SendMessage
  4. PostMessage
  5. GetMenu
  6. GetSubMenu
  7. GetMenuItemID

例えば、コントールの疑似クリック処理は、コントロールに対してPostMessageを使用し、

  • WM_LBUTTONDOWMメッセージ
  • WM_LBUTTONUPメッセージ

を順に投げることで実現しています。

あれ・・・

Get-Windowコマンドレットには、第1引数にフォームタイトル(文字列)を渡しますが、
5文字までという実装がされています。なぜー。(?_?;
不便なので、書き変えちゃいましょう。