【第61回】ロータス博士のWinActor塾~UIオートメーションⅡ
今日は前回の続きで、UIオートメーションについてのお勉強じゃ。
自動記録は思ったより簡単でしたね!
今日はUIオートメーションの何をやるんですか?
そうじゃな、今日は手動でノードを設置した場合の
プロパティ設定について学ぼうと思う。
かなり設定項目が多いから、お主の嫌いな座学で一日終わってしまうじゃろうな。
え・・・うそ・・・。
僕、実践が無いと授業中寝ちゃうタイプなのに。
いやダメじゃよ。何をカミングアウトしとるんじゃ。
それでは、退屈な授業のスタートじゃ!
UIオートメーションノード
ライブラリの配置
UIオートメーションには、操作に応じたノードがいくつか用意されています。
今回は「UIオートメーション」というノードを使用します。
ライブラリは以下の場所に格納されています。
NTTATライブラリ > 04_自動記録アクション > 02_UIオートメーション
プロパティ設定
UIオートメーションノードには多くの設定項目があります。
そのため、プロパティは「基本設定」「コントロールパス編集」「詳細設定」の3つのタブに分かれています。
ただオートメーションを利用するだけであれば「基本設定」内の項目だけで事足りますが、
さらに細かい設定が必要な場合は他のタブで調整を行います。
実際に調整することは少ないですが、今回は全てのタブと項目の設定について解説します。
プロパティ設定(基本設定タブ)
プロパティの項目には、値を設定しないと表示されないものもあるため
例として前回同様に電卓をターゲットとした値を入れています。
No. | 名称 | 説明 |
❶ | 名前 |
名前を設定できます。フローチャート上の表示名です。 |
❷ | コメント | シナリオ作成時のメモとしてコメントを設定できます。 |
❸ | 基本設定タブ |
基本設定を表示します。 上図のプロパティ画面でない場合はここをクリックして表示を変更してください。 |
❹ | ウィンドウ識別名 |
リストの中から選択、もしくはターゲット選択ボタンから、対象となるアプリケーションウィンドウを指定します。 |
❺ | 対象コントロール指定 | 対象コントロール指定ボタンをクリックし、対象となるコントロールを指定します。ウィンドウ内にあるボタンなどのパーツのことを指します。 |
❻ | 待ち時間 | 対象コントロール指定開始までの時間を「即時」「3秒」「10秒」「30秒」から選択できます。ポップアップメニューなど、目的の要素を表示されるまでに時間が掛かるものを指定したい時に使用します。 |
❼ | コントロールパターン | 対象コントロールに対する操作の種類を「共通」「折り畳みメニュー」「ボタン」「スクロール」「選択」「選択要素」「トグル」「値の設定と取得」から選択します。 |
❽ | アクション | コントロールパターン毎に定められた操作を設定します。コントロールパターンで選択した操作によって、選べるアクションが変わります。 |
❾ | アクション設定 | アクション毎に定められた設定項目が表示されます。コントロールパターンとアクションで選択した項目の組み合わせによって、選べる設定が変わります。設定がない場合は何も表示されません。 |
コントロールパターンとアクションの設定について
コントロールパターンを設定していない状態で、対象コントロール指定ボタンをクリック後に、対象ウィンドウにマウスを乗せると、選択中の要素がオレンジ枠で表示されます。
左クリックで要素を決定すると、メニューが表示され、ここからでもコントロールパターンとアクションを選択することが可能です。
※参考画像:公式操作マニュアルより抜粋
コントロールパターンを設定した状態で同じ操作をした場合、その要素で選択可能なコントロールパターンであればオレンジ枠が表示されます。選択できないコントロールパターンであれば暗い赤色の枠が表示されます。
枠がどちらの色であっても、左クリックでメニューが表示されます。
※参考画像:公式操作マニュアルより抜粋
対象コントロール指定時のエラー
対象コントロール指定の際、または自動記録の際に下記のエラーが表示される場合があります。
この要素は、場所の特定に必要な情報を持っておらず、コントロールパスを生成できないため操作対象とすることができません。
この場合はエミュレーションや画像マッチングの代用を検討しましょう。
また、設定したウィンドウ識別名に一致しないウィンドウ上のコントロールを指定しようとすると下記のエラーとなります。
これは対象コントロールが指定のウィンドウと一致していない場合に発生します。
ウィンドウ識別名で設定したウィンドウ内の要素を選択するようにしましょう。
各アクションの機能
コントロールパターンで選択した項目によって変化するアクションの動作は以下のようになります。
コントロールパターン「共通」は、各要素共通の操作を設定できます。
アクション | 機能 | |
ラベルを取得する | 要素のラベル(Name属性)を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得したラベルを格納する変数名を指定します。 |
コントロールパターン「折り畳みメニュー」は、メニューやドロップダウンリストなど、折り畳める要素を操作します。
アクション | 機能 |
開く | 折りたたまれている要素を開きます。既に開いている場合はそのままにします。 |
閉じる | 開いている要素を閉じます。既に閉じている場合はそのままにします。 |
コントロールパターン「ボタン」は、ボタンなどのクリック可能な要素を操作します。
アクション | 機能 |
クリック | マウスの左クリックと同じ効果を得ます。 |
コントロールパターン「スクロール」は、スクロール可能な領域全体を1つの要素として操作します。
アクション | 機能 | |
水平スクロール可能かを取得 | 水平スクロール可能な場合は「true」、不可能な場合は「false」を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
水平方向のスクロール位置を取得 | 水平方向について、コンテンツサイズに対するスクロール位置を割合(0-100)で取得します。左端が0、右端が100、中央が50となります。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
水平方向の表示割合を取得 | 水平方向について、コンテンツサイズに対する表示領域のサイズの比率(全体の何%が見えているか)を割合(0-100)で取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
水平方向にスクロール | 水平方向にスクロールします。 | |
アクション設定 | 設定項目 | |
水平スクロール量 | スクロール量を「右スクロール(大)」「右スクロール(小)」「左スクロール(大)」「左スクロール(小)」から選択します。 | |
垂直スクロール可能かを取得 | 垂直スクロール可能な場合は「true」、不可能な場合は「false」を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
垂直方向のスクロール位置を取得 | 垂直方向について、コンテンツサイズに対するスクロール位置を割合(0-100)で取得します。上端が0、下端が100、中央が50となります。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
垂直方向の表示割合を取得 | 垂直方向について、コンテンツサイズに対する表示領域のサイズの比率(全体の何%が見えているか)を割合(0-100)で取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
垂直方向にスクロール | 垂直方向にスクロールします。 | |
アクション設定 | 設定項目 | |
垂直スクロール量 | スクロール量を「下スクロール(大)」「下スクロール(小)」「上スクロール(大)」「上スクロール(小)」から選択します。 | |
水平垂直にスクロール | 水平方向と垂直方向にスクロールします。 | |
アクション設定 | 設定項目 | |
水平スクロール量 | スクロール量を「右スクロール(大)」「右スクロール(小)」「左スクロール(大)」「左スクロール(小)」から選択します。 | |
垂直スクロール量 | スクロール量を「下スクロール(大)」「下スクロール(小)」「上スクロール(大)」「上スクロール(小)」から選択します。 |
コントロールパターン「選択」は、メニューなど、複数項目から選択する要素を操作します。
アクション | 機能 | |
複数選択可能かを取得 | 複数選択可能であれば「true」、単一選択であれば「false」を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
選択必須かどうかを取得 | 選択が必須であれば「true」、必須でなければ「false」を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
選択要素をテキストで取得 | 選択した要素をカンマ区切りのテキスト文字列で取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
選択要素をインデックスで取得 | 選択した要素をカンマ区切りのインデックス文字列で取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
指定した値を持つ要素を選択 | 指定した値を持つ要素を選択します。複数ある場合は最初の1つを選択します。該当する要素がない場合は選択しません。 | |
アクション設定 | 設定項目 | |
選択要素の値 | 選択する値を指定します。変数名または値が指定できます。 | |
指定したインデックスの要素を選択 | 指定したインデックスの要素を選択します。該当する要素がない場合、またはマイナスのインデックスが指定された場合は選択しません。 | |
アクション設定 | 設定項目 | |
インデックス | 選択するインデックスを指定します。変数名または値が指定できます。 | |
選択可能な要素の数を取得 | 選択可能な要素の数を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
選択可能な要素をテキストで取得 | 選択可能な全ての要素の値をカンマ区切りのテキスト文字列で取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 |
コントロールパターン「選択要素」は、複数の選択項目に含まれる1つの要素を操作します。
アクション | 機能 | |
選択されているかどうかを取得 | 選択されている状態であれば「true」、そうでなければ「false」を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
この要素を追加選択する | この要素を追加選択します。既に選択中の場合はそのままとします。 | |
この要素を選択から外す | この要素の選択状態を解除します。 | |
この要素を選択する | 他の選択要素を解除状態にして、この要素を選択状態にします。 |
コントロールパターン「トグル」は、チェックボックスなど、操作のたびに状態が入れ替わる要素を操作します。
アクション | 機能 | |
トグル状態を切り替える | トグル状態を切り替えます。既にオンであればオフ、オフであればオンにします。 | |
現在のトグル状態を取得する | トグル状態がオンであれば「true」、オフであれば「false」を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 |
コントロールパターン「値の設定と取得」は、テキストボックスなど、値を保持している要素を操作します。
アクション | 機能 | |
読み取り専用かどうかを取得する | 読み取り専用であれば「true」、読み書き可能であれば「false」を取得します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
値を取得する | 値を取得します。Password属性の場合はエラーとなり、シナリオ実行が一時停止します。 | |
アクション設定 | 設定項目 | |
取得結果 | 取得した結果を格納する変数名を指定します。 | |
値を設定する | 指定した値を設定します。読み取り専用の場合はエラーとなり、シナリオ実行が一時停止します。 | |
アクション設定 | 設定項目 | |
設定値 | 設定する値を指定します。変数名または値が指定できます。 | |
通常入力モード | UIオートメーション共通のインターフェースを使用して値を設定するモードです。初期設定はこのモードとなっています。 | |
キーイベント送信モード | 対象要素をテキストフォームと見なして、キーイベントを送信することで入力を行うモードです。 | |
Excelのセル入力モード | Excelのセル入力に特化して、キーイベントを送信することで入力を行うモードです。 |
わしが言うのもなんじゃが、コントロールパターンの設定の種類が多くてヘヴィじゃったな。
僕はもうギブアップの構えです。
こんなに覚えられませんよ・・・。
ここに関しては、覚えてもらうために紹介している訳ではないから
無理に覚えようとしなくてもよいぞ。
実際に設定する時に、ここを見ながらやれば良いのじゃ。
こんな項目があるというのをなんとなーく見てもらえればOKじゃよ!
なんだ、よかった。
一瞬外付けハードディスクの購入を検討しちゃいましたよ。
じゃあ次いきましょう!
え、わしらって外付けで拡張できるの・・・?
プロパティ設定(コントロールパス編集タブ)
コントロールパス編集タブは、コントロールパスをテキストとして直接編集できる上級者向けの機能です。
対象コントロール指定時に自動的に生成されるため、触ることはほとんどありませんが
パスの中身を変数などに置き換えて汎用的な操作を作ることが可能です。
No. | 名称 | 説明 |
❶ | コントロールパス編集タブ |
コントロールパス編集を表示します。 |
❷ | 埋め込み変数を展開 | チェックを付けると、実行時に対象コントロール指定内の%変数名%の部分を変数の値で置換します。チェックを外すと置換しません。 |
❸ | 対象コントロール指定 | 対象コントロールのコントロールパスを表示します。コントロールパスは基本設定タブで対象コントロール指定をすると自動的に生成されます。コントロールパスはこの画面で直接編集することができます。コントロールパス内に%変数名%を記述することで、実行時にその部分を変数の値で置換することができます。 |
コントロールパスとは、操作対象となる要素の場所を示すテキスト形式のデータです。
要素は対象ウィンドウ内で階層的に配置されているため、コントロールパスは、
対象ウィンドウを起点として、これら要素の場所を階層的に表現しています。
プロパティ設定(詳細設定タブ)
詳細設定タブでは、動作中の待機条件やタイムアウトまでの時間設定などを設定することができます。
動作が重い環境やタイミングに合わせて調整することでエラー対策となります。
No. | 名称 | 説明 |
❶ | 詳細設定タブ | 詳細設定を表示します。 |
❷ | タイムアウト設定 | タイムアウト設定の参照先を指定します。「シナリオ情報画面で指定」、「オプション画面で指定」、「ノードで指定」から選択します。「シナリオ情報画面で指定」の場合、シナリオ情報画面で設定されたタイムアウトの設定値が有効になります。「オプション画面で指定」の場合、オプション画面で設定されたタイムアウトの設定値が有効になります。「ノードで指定」の場合、「タイムアウト(ミリ秒)」の値が有効になります。 |
❸ | タイムアウト(ミリ秒) | タイムアウト時間の長さです。「タイムアウト設定」で「ノードで指定」を選択した場合のみ有効です。時間の範囲は100~3,600,000 までです。未設定で更新ボタンをクリックした場合には、30,000 ミリ秒が設定されます。 |
❹ | 待機条件 | ノードの実行開始からタイムアウトをチェックする期間を指定します。「ウィンドウが見つかるまで」または「対象コントロールが見つかるまで」から選択します。「ウィンドウが見つかるまで」の場合、ウィンドウが見つかるまでにタイムアウト時間が経過するとエラーとなります。「対象コントロールが見つかるまで」の場合、ウィンドウが見つかり、対象コントロールを探索するための要素情報を取得し、対象コントロールを発見して実行するまでの一連の動作が完了するまでに、タイムアウト時間が経過するとエラーとなります。 |
❺ | 実行時の対象コントロール探索 | ウィンドウを発見した後、対象コントロールを探索するための要素情報をウィンドウから取得する動作を指定します。「要素情報を毎回最新に更新してから探索(低速)」または「要素情報を可能な限り再利用する(高速)」から選択します。「要素情報を毎回最新に更新してから探索(低速)」の場合、ウィンドウの要素情報を取得してから探索します。「要素情報を可能な限り再利用する(高速)」の場合、既に取得済みの要素情報を再利用して探索するため、UI オートメーションノードの動作が高速になります。ただし、シナリオ開始後にUI オートメーションノードが初めて操作するウィンドウの場合、対象コントロールが見つからない場合、または「許可されない操作」エラーが発生した場合には、設定に関わらず、要素情報を取得します。 |
❻ | 「許可されない操作」エラーが発生した場合に再度実行する再試行上限 | 対象コントロールの操作を実行したときに「許可されない操作」エラーが発生した場合に、実行の再試行を試みる上限回数を設定します。対象コントロールの操作が成功すると、実行は完了となります。この設定項目は再試行の回数です。0 を指定すると再試行しません。マイナスを指定すると再試行の上限なしとなります。ただし「待機条件」が「ウィンドウが見つかるまで」の場合、マイナスを指定できません。また、「対象コントロールが見つかるまで」の場合、タイムアウトのチェック対象となります。 |
WinActor Ver.7.2.x 以前のシナリオを読み込んだ場合の設定値は次のようになります。
・タイムアウト設定:オプション画面で指定
・待機条件:ウィンドウが見つかるまで
・実行時の対象コントロール探索:要素情報を毎回最新に更新してから探索(低速)
・「許可されない操作」エラーが発生した場合に再度実行する再試行上限:0
今日こんなに重い内容だなんて聞いてないですよ博士。
いつもの適当さはどこにいったんですか・・・。
失礼じゃな・・・。わしはいつも真面目じゃぞ!
途中でも言った通り、いざ設定するときに見返せばよい。
全て覚えたらそれは確かにすごいが、その必要はないのじゃ。
なんだか博士に言われると安心してスルーできますね。
とは言っても、どんな設定があるかだけは頭にいれておこう。
まあ今回はちょっとお堅い内容じゃったからな。次はWinActorを触れるような内容にしようかの。
それではまた次回をお楽しみに!
関連記事こちらの記事も合わせてどうぞ。
2024.11.05
【第105回】ロータス博士のWinActor塾~新しい画像マッチング画面
2024.09.27
【第104回】ロータス博士のWinActor塾~ガイド利用シナリオ(作成編)
2024.09.10