8

こんにちは、NTTデータ WinActor技術支援チームです。
いつもユーザーフォーラムをご利用いただき、ありがとうございます。
 
エラーが発生した時、どのような情報を取得したり確認すれば良いか困りませんか。
WinActorの同梱ライブラリには、エラー時の情報取得を行うのに有用なライブラリが準備されています。
今回は、そのライブラリについてご案内したいと思います。
エラーが発出されにくいシナリオの作成や、エラーが発出された時の原因調査にご活用ください。
 
ご紹介するライブラリは、ライブラリ/01_WinActor制御/07_デバッグ にございます。
今回はその中の「デバッグ:ウィンドウ状態」「デバッグ:ウィンドウ状態保存」についてご紹介させていただきます。
 
 
ライブラリ/01_WinActor制御/07_デバッグ 「デバッグ:ウィンドウ状態」
 
「デバッグ:ウィンドウ状態」は、起動しているウィンドウの状態を画面で確認することができます。
 ※この画面はシナリオを終了した後も表示されたままになります。画面を終了する時は、右上の×にて終了させてください。
 
   《画面イメージ》


 ①Hwnd:ウィンドウハンドル
 ②Title:ウィンドウタイトル
 ③Class:ウィンドウクラス名
 ④Process:プロセス名
 ⑤Size:ウィンドウサイズ
 ⑥IsWindow:ウィンドウかどうかの判断
 ⑦IsWindowVisible:ウィンドウの表示・非表示を判断
 ⑧IsWindowEnabled:ウィンドウの有効・無効を判断
 
 
では、上記情報をどのように活用すればいいかといいますと、
②から⑤は、ウィンドウ識別ルールの項目でもあるので、ウィンドウ識別ルールの設定と実際のウィンドウの状態を比較することができます。
①や⑧はノード「ウィンドウ状態待機」の画面の変化に設定している内容の判定に使用されていますので、
設定内容と実際のウィンドウ状態を比較することができます。
⑥はウィンドウとして認識しているかどうかの判断を確認することができますし、
⑦はウィンドウ上表示されていると判断されているかどうかの判断を確認することができます。
 
 
 【参考】「ウィンドウ状態待機」の判定基準
  ・画面が操作可能になるまで:IsWindowEnabled()の戻り値がtrue
  ・画面が表示されるまで:表示状態の全ウィンドウから指定ウィンドウのハンドルを検索して一致する
  ・画面が手前になるまで:指定ウィンドウのハンドルとアクティブウィンドウのハンドルが一致する
  ・画面が消えるまで:表示状態の全ウィンドウから指定ウィンドウのハンドルを検索して一致するものがない
  ・画面が手前でなくなるまで:指定ウィンドウのハンドルとアクティブウィンドウのハンドルが一致しない
  ・画面が操作不可能になるまで:IsWindowEnabled()の戻り値がfalse
 
 
ウィンドウ状態を確認する画面は、シナリオ実行後(「デバッグ:ウィンドウ状態」実行後)も表示されたままになります。
例えば、シナリオの動作検証等を行っている時のエラー調査であれば、
一度この画面を表示させておけば、気になるタイミングで画面下の「update state」ボタンをクリックすることで、
クリックした時点での画面状態に情報を更新することができます。
 
 
「get state」ボタンと「update state」ボタンの違いですが、マニュアルには以下の説明がされています。
  「get state」ボタン:現在のメモリの状態を表示します。
  「update state」ボタン:実際の画面に合わせて状態を更新します。
もう少し詳しく説明しますと、
「get state」ボタンは、WinActorが(メモリに)キャッシュしているウィンドウ一覧に基づいて表示を行っており、
「update state」ボタンは、WinActorのウィンドウ一覧の再収集(「ウィンドウ識別クリア」と同じ)をしてから、
最新のウィンドウ一覧に基づいた表示を行っています。
このことから、「get state」ボタンと「update state」ボタンで表示される内容は、一致しない場合もございます。
エラー調査の時は、実際にデスクトップ上に表示されているウィンドウの状態を確認し、
問題がなければさらに踏み込んで、WinActorが認識しているウィンドウの一覧に差がないかを調べることができます。
 
 
ウィンドウ状態を確認する画面で、どの情報がどのウィンドウを指しているのかを確認したい時は、
「highlight」ボタンをクリックすることで、対象ウィンドウが枠で囲まれた状態になり、画面を特定することができます。
 
 
 
ライブラリ/01_WinActor制御/07_デバッグ 「デバッグ:ウィンドウ状態保存」
 
「デバッグ:ウィンドウ状態」は、ウィンドウ状態を確認する画面が表示されますが、
エラー時のウィンドウ状態を毎回画面確認して行うのはあまり有効ではありません。
その時にご利用いただきたいのが、「デバッグ:ウィンドウ状態保存」です。
「デバッグ:ウィンドウ状態保存」は、csvやtxtファイル形式にてライブラリ実行時のウィンドウ状態を出力いたします。
 
   《出力イメージ》

csvファイルの内容は「デバッグ:ウィンドウ状態」と同じです。
 ①Hwnd:ウィンドウハンドル
 ②Title:ウィンドウタイトル
 ③Class:ウィンドウクラス名
 ④Process:プロセス名
 ⑤Size:ウィンドウサイズ
 ⑥IsWindow:ウィンドウかどうかの判断
 ⑦IsWindowVisible:ウィンドウの表示・非表示を判断
 ⑧IsWindowEnabled:ウィンドウの有効・無効を判断
 
ファイルの場合、エラーの都度出力することができるので、
エラー時にファイル出力しておけば、後で確認することもできます。
出力ファイル名を同じにしなければ、上書きされることもありませんので、エラー毎に情報を出力、保存しておくこともできます。
 
エラー時に実行ログを確認して、原因調査するのも有効ですが、
ウィンドウを操作するシナリオの場合は、それに加えてエラー時のウィンドウ状態を取得することによって
原因特定の足掛かりとなりますので、ぜひ、ご利用ください。
 
 
エラー原因を調査するのに役立つライブラリ_その2では、
ライブラリ/01_WinActor制御/07_デバッグ 「デバッグ:ウィンドウ識別」「デバッグ:ウィンドウ識別保存」を紹介しております。
 
 
 
【動作検証環境】
WinActor:Ver.7.3.1
OS:Windows10
 
 
<お願い>
 本投稿に関しての問合わせにつきましては、恐れ入りますが、コメントではなく
 個別問合せにてお願いいたします。

技術支援チーム41 質問の編集
回答とコメントは、会員登録(無料)で閲覧できるようになります。