本日は比較的多くあるエラー
“ウィンドウ識別名XXXXXXXに一致するウィンドウが存在しませんでした”
の解決方法について解説したいと思います。
以下の順番で解説します。
操作対象となるウィンドウを見つけるまでの概略を説明した後、
解決方法の説明、補足としてウィンドウ識別名の整理方法になります。
winactorはまず操作対象となるウィンドウを探しに行きます。
画像マッチング、エミュレーション、IEモードなど主要な記録方法がありますが
操作対象となるウィンドウを指定しなければなりません。
それがウィンドウ識別名なのです。
ウィンドウ識別名は表示されているサイトに必ず設定されているものです。
タブにカーソルを合わせるとYahoo!JAPANと表示されています。
これがウィンドウ識別名になります。
画像マッチングでYahoo!JAPANを選択します。
ウィンドウ識別名はYahoo!JAPAN-InternetExplorerとなっています。
設定した画像マッチングにカーソルを合わせるとID:7表示されています。
winactorが実行されるとID番号を取得します。
ID番号を基にウィンドウ識別ルールを参照します。
ID7をwinactorが参照します。
何を参照するかというと赤線箇所になります。
Yahoo!JAPAN-InternetExplorerに一致するというところです。
ウィンドウ識別名、Yahoo!JAPAN-InternetExplorerに一致するするウィンドウを探しに行くわけです。
つまり”ウィンドウ識別名XXXXXXXに一致するウィンドウが存在しませんでした”というエラーは今回の場合はYahoo!JAPAN-InternetExplorerに一致するするウィンドウがないという事になります。
設定時はIEだが実行時にはクロムを利用している。
ということがあります。
どういうことかといいますと、下記のようにIEでyahooを開いて
ウィンドウ識別名をYahoo!JAPAN-InternetExplorerとしました。
しかし実行時にはIEでなくchromeで開き実行した。
このパターンです。
一度chromeで開いて画像マッチングでウィンドウ識別名を取得しますと
ウィンドウ識別名はYahoo!JAPAN-GoogleChromeとなります。
もう一度ウィンドウ識別ルールを確認します。
Yahoo!JAPAN-InternetExplorerに一致するとなっています。
つまりYahoo!JAPAN-GoogleChromeとは一致しません。
ですので一致するウィンドウがないという事になるんですね。
今回のように利用するブラウザがまちまちの場合は、下記のようにします。
Yahoo!JAPANを含むにします。
-InternetExplorerを削除して、一致→含むに変更します。
ウィンドウクラス名、プロセス名もIE特有のものですから指定しないにします。
これでブラウザに依存することがなくなります。
※ただし画像マッチングのアクションを状態チェックとしている場合、一致するウィンドウがない時、エラーを出さずにfalseを返すだけになります。
※ウィンドウサイズを指定する必要はほぼないと思います。
一度筆者が遭遇したのは全く同じウィンドウ識別名をもつサイトを交互に操作する必要がありました。
その際にはサイズで識別させましたが、かなりレアなケースです。
このパターンが一番多いのではないでしょうか。
例えば筆者が客先で遭遇した例では、yahoo路線情報から最安値を取得して自己申告の金額を比べるというものがありました。
例えば下記の画面で料金の安い順を押下させたいとします。
エミュレーションを使うにせよ、画像マッチングにするにせよ
まずはウィンドウ識別名を取得しないといけません。
ウィンドウ識別名を取得してみましょう!
「東京」から「大阪」への乗換案内 – Yahoo!路線情報 – Google Chromeとなりました。
つまりこのままだと東京大阪間の検索にしか使えないんです。
汎用性がないんですね。
ですので識別ルールを変更します。
「東京」から「大阪」への乗換案内 –を消去します。
更に– Google Chromeを消去します。
Yahoo!路線情報 を含むにします。
ウィンドウクラス名、プロセス名もIE特有のものですから指定しないにします。
これでブラウザに依存することなく、東京大阪間でなくとも大丈夫です。
このように識別ルールを調整してエラーを防ぎます。(^^)/
シナリオ製作していますと
乗換案内、時刻表、運行情報 – Yahoo!路線情報 – Google Chrome
乗換案内、時刻表、運行情報 – Yahoo!路線情報 – Google Chrome_1
のようにウィンドウ識別名が増えていきます。
しかし識別文字列は
両方とも同じでYahoo! JAPAN – Google Chromeです。
ですので統一した方がスッキリします。
ノードID37をYahoo! JAPAN – Google Chromeへドラッグアンドドロップします。
Yahoo! JAPAN – Google Chrome_1を削除します。
下記のようにまとまってスッキリしました。
今回はこれで以上です。
閲覧して頂きありがとうございました。
以下参考書籍です。
winactor書籍の中では1番かと思います。
またその他のよくあるエラーについてまとめましたので参考にしてみてください。