わんすけに聞いてみる WinActor UIAutomationでCheckboxとRadioButton

UIAutomationでCheckboxとRadioButton

WinActorで無理やりUIAutomation制御する企画。

今日は、チェックボックスとラジオボタンの操作にチャレンジ。

 

1.CheckBoxコントロール

最初、普通にClick操作でInvokeしたらいいんじゃね?って思ったんだけども、結局それだとTrue/False状態を任意に制御できない。

チェック状況を取得しようとすると、ちゃんとAutomationElementからTogglePatternとして取得して操作しないといけないみたいですね。

ちなみに、取得されるステータスはON/OFF以外にIndeterminateというステータスが返ってくるみたいなので値のチェックにも注意が必要です。

取得するコードはこんな感じ

対して、設定するコードはこんな感じ

ToggleStateがIndeterminateで返る可能性があるので、Onかどうかで判定してToggleする感じで考えてみた。

DefaltがTrueのチェックボックスで取得結果がIndeterminateだけどもチェック入ってる状況っていうコントロールがもしあれば、操作が失敗することになる。

 

2.RadioButtonコントロール

内部的には、SelectionItemPatternになってるみたい。

ListViewの時は、SelectionPatternが親でSelectionItemPatternが子になっているツリー構造だったんだけどもUI的にきちんとフレームとかでグルーピングされていないRadioButtonはどのボタン同士がグルーピングされているのか判別できる項目が見当たらなくて、ただSelectionItemPatternが並んでるだけに見える。

てことは、プロパティ値としてはListViewの中で選択されている項目とRadioButtonの選択項目は同じ様にIsSelectedプロパティ見るだけで判定/設定できるってことですね。

前回のListView項目選択のコードを拡張する形で考えるとこうかな。

IsSelectionPatternAvailableがTrueだったら、子要素のIsSelectionItemPatternをSelectするし、IsSelectionItemPatternAvailableがTrueだったらそのままSelectするみたいな感じ。

これで、ComboBox・ListView・RadioButtonは共通的に項目選択ができるハズ。

 

3.本日の成果物

アップロード資材はこちら。

1.UIA_cmd.exeをWinActor.exeと同じフォルダに配置。

2.「スクリプト実行ノード張り付け用.txt」をスクリプト実行ノードに張り付け。

 

今回の更新で、操作の内容にGetToggle,SetToggleと、GetSelectionItemIsSelected,SetSelectionItemValueが追加されました。

今度は、このUIAutomationをVBSめーかーからキックできる様にしてみよう。

わんすけへ寄付金を送る

このサイトの情報が役に立ったなーって思う方がいらっしゃれば、

是非「わんすけに缶コーヒー1本でもご馳走する」気持ちでポチってあげて下さい😉

¥120

コメントを残す

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

Related Post

[WinActor]変数が参照されているため、削除することができません。[WinActor]変数が参照されているため、削除することができません。

ノードやライブラリで変数が使われている状態で変数一覧から変数を削除しようとすると、このエラーがでます。 %変数名%表記で使われている変数ではこのメッセージがでないので注意しましょう。 ※参考 : 変数の値をメッセージやコ […]