UIテストの自動化をサポートするコマンドレット
UIテストの自動化
2007年12月のMSDNマガジンにPowerShellの記事が掲載されています。
ここでは、.NETアプリケーションに対して、「フォームやコントロールのハンドルを取得」したり「コントロールにクリックイベントを発生」させるコマンドレットが紹介されています。
これらのコマンドレットを利用すると、PowerShellからUIを操作して、UIテストを行うことができます。
コマンドレットの内部処理
コマンドレット内部では、P/Invokeを使用して以下のWin32APIをコールしています。
- FindWindow
- FindWindowEx
- SendMessage
- PostMessage
- GetMenu
- GetSubMenu
- GetMenuItemID
例えば、コントールの疑似クリック処理は、コントロールに対してPostMessageを使用し、
- WM_LBUTTONDOWMメッセージ
- WM_LBUTTONUPメッセージ
を順に投げることで実現しています。
あれ・・・
Get-Windowコマンドレットには、第1引数にフォームタイトル(文字列)を渡しますが、 5文字までという実装がされています。なぜー。(?_?; 不便なので、書き変えちゃいましょう。