WinActorに欠かせない機能のひとつとして、画像マッチングがあります。
うまく使えばかなり便利な機能になります。
複数の画面を遷移するロボットを作成したい場合、画面を掴めず処理が途中で止まってしまうという事象が発生した方もいらっしゃるかと思います。
ですので、こちらではその解決策を紹介していきます。
■必要な変数
・ループカウンタ
・処理結果
・待機時間
・リトライ上限
1.初期値設定
・ループカウンタ:0
・処理結果:false
・待機時間:1000
・リトライ上限:10(任意の値)
2.ループ
繰り返し条件:ループカウンタ < リトライ上限
AND 処理結果 = false
※「条件」をクリックして条件追加ボタンを押下すると条件が追加できます
3.ループ内処理
3-1.指定時間待機
使用ノード:09_待機\指定時間待機(変数指定可)
待機時間(ミリ秒):待機時間
3-2.画像マッチング
使用ノード:画像マッチング
・ウィンドウ識別名:対象の画面
・マッチ率:40~70%
※高すぎると画面が開かれているのに認識しない可能性があるので何度か試して調整してください
・タイムアウト:1,000
※ループの最初に待機処理を入れているので、もっと少なくてもOKです
・状態取得結果:処理結果
3-3.ループカウンタカウントアップ
使用ノード:カウントアップ
計算結果:ループカウンタ
加算値:1
ループはここまで
4.画像表示判定
使用ノード:分岐
条件:処理結果 = true
あとは、画像を掴めたかどうかに応じて、必要な処理を追加すればOKです。
画像マッチングが早すぎて1回目は画面を掴めなくても、待機してリトライするので、掴める可能性がグッと上がります。
これでリトライ上限まで画面が掴めなかった場合は、以下の方法をお試しください。
・マッチング率を調整する
・画像の赤枠範囲を調整する
・待機時間を増やす
画面を複数遷移して自動で処理したい場合は、上記の手順を使い回せば実現可能です。
注意点としては、ループの前に必ずループカウンタと処理結果を初期化する必要がありますので、そのふたつを初期化する処理をサブルーチン化しておくと便利です。
以上が、WinActorによる、画面を遷移する場合の画像マッチング処理でした。