UIAutomationでUI操作してみる

■ UI自動化について考える

 

前回なんとなくUI検査ツール使ってみたらAutomationIDってのを発見して、これはもしかしてUI自動化できるのか?という気配を感じた。

Inspectツールの上のプルダウンから、「MSAA」、「UI Automation」が選択できる。

どうもすこし調べた感じだとMSAAの方が昔っからある規格らしい。

AutomationID」は、「UI Automation」の方を選択した時に取得できる。

と、いう訳でUI Automationというライブラリについていろいろ調べて実験した。

 

1..NETフレームワークから使えるようだ。

.NETフレームワークから、System.Windows.Automationというライブラリから使えるようだ。

.NETフレームワーク開発といえば、Visual Studioさん。

まず、参照設定を追加してUI Automationを使えるようにする。

  • UIAutomationClient
  • UIAutomationTypes

この2つが参照設定で追加されてればいいみたいね。

 

2.とにかくコード書いて試しまくった。

コンソールアプリケーションでプロジェクト作ってMicrosoft Docsとにらめっこ。

動くまであきらめずサンプルコード試しまくった。

なんとなく動く感じになってきたコードがこれ。

 

3.使い方

コマンドプロンプトから3~4個のオプションを指定して起動する。

  • 第一引数
    • Click – クリックイベントを発火する(Invoke)
    • Focus – 要素にフォーカスを移動する
    • GetValue,SetValue – テキスト編集欄の取得設定(TextBox,直接編集可能なCombobox)
    • GetSelection – Combobox, ListViewの選択項目が取得
    • GetSelectionItemIsSelected – RadioButton, Combobox, ListViewの選択項目がIsSelectedかどうかを取得
    • SetSelectionItemValue – RadioButton, Combobox, ListViewの選択項目を設定
    • GetToggle,SetToggle ⇒ Checkboxの取得設定
    • GetName – 要素のNameプロパティを標準出力に表示する
  • 第二引数
    • ウィンドウハンドルを指定(GetHWND:ウィンドウタイトルorプロセス名でも可)
  • 第三引数
    • Inspectツールで取得したName or AutomationIDを指定

(:で区切ってオプション指定することでNext・Previousにも対応)

  • 第四引数(第一引数:Set~の場合のみ)
    • 要素に設定した文字を指定

電卓の計算結果が「Text」ってなっててGetValueだと値とれなかったからGetNameを追加した。

でも、このまま結果取得すると「表示は●●です」って出てしまう。。。

 

でも、なんとなくこれをWinActorのスクリプト実行ステージに仕込めばイベントモードのWIN32では操作が座標指定になってしまう要素も操作できるんじゃないかという期待を込めて。

コンパイル済みファイルはこちら

タグ:

「UIAutomationでUI操作してみる」に4件のコメントがあります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です