画像判断:データありとなしの場合画像が異なる場合

activities

#1

システムでデータが存在する場合としない場合では画面のイメージで判断する必要があります。
find imageでイメージは判断できますが、存在する場合としない場合とで画像が異なるのでどのようにUIPATHで判断すべきか悩んでいます。
また、on image appearも利用しましたが複数照合ができません。
処理時間も長く、データありなしで表示される画像が異なるということで対応方法ご教示ください。
よろしくお願いします。


#2

Image Exists で特定のイメージの存在の有無をチェックするのではだめでしょうか?

データ有のイメージの存在有無をチェックした場合

  • データ有のイメージが見つかったらTrueが返る
    -> データあり
  • データ有のイメージが見つからなければFalseが返る
    -> データなし

#3

ありがとうございます。
image existsのプロパティ:output>foundで変数してすれば、boolean変数となり存在すればtrueなしであればfalseとすればよいでしょうか。


#4

どちらかのデータありの時の画像となしの画像を同時に比較しないと処理時間が長く残念ながら
image existsではできませんでした。


#5

Image Existsを使いつつ、Parallel Activityを使って判定をさせるとスッキリいくと思います。
「両方とも画像が見つからない(Falseになる)」場合があるので、Do ~ Whileを使い、どちらか片方がTrueになるまでループを回すことで、確実に処理できます。

(画像のやり方では、dataExists・dataNotExistsという2つのBoolean型変数を使用して判定しています)


#6

ありがとうございます。
parallelとdo whileで会社の方と考えていましたがまだ勉強不足で、判断処理がわかりませんでした。
作成はしたのですがうまく判断する場合とエラーが出る場合があります。
timeoutMSの関係と考えながら設定を変えたりしましたがうまくいきません。

SAPのデータで通常であれば別画面が出るのですが今回は、完了画面がでないので画像判断の形になりました。
改めてご教示いただければと思います。
データ量によりますが処理が長いと1Hということもあります。
images.zip (15.6 KB)

Main2.xaml (322.5 KB)

エラー内容です。
Main has thrown an exception
Message: Job 画像 stopped due to unexpected process termination!
Exception Type: Exception
System.Exception: Job 画像 stopped due to unexpected process termination


#7

TimeoutMSはかなり短めにとって良いはずです。むしろ、どちらかが見つかるまでループするので、短いほうが良いと思います。
(UiPathのParallelは、Parallelと言っていますが、実のところ「複数スレッドで同時に行う」ではなく「独立した処理を順不同で行う」動作なので……)

おそらく値を設定しないときの初期値はFalseになっているとは思うのですが、ParallelアクティビティのCompletionConditionは明確にFalseにする必要があります。(Trueにすると「Parallel内のどれか1つのActivityが終了した時点でParallelを抜ける」動作になるので、最初の1つの画像を存在確認した時点で抜けてしまうことになります)

今回のような「単体で試してみるための」フローだとありがちなのですが、画像を複数アプリで表示してテストしようとしたとき、セレクタが混乱して思うように動かない状況にハマっている可能性もあるので、むしろ実環境で試してみてください。
あと、Image ExistsのAccuracyは数値は、デフォルトの0.8よりはもう少し高めのほうが安定すると思います。


#8

本当に勉強になります。
ありがとうございます。
システム稼働後実環境で行ってみます。


#9

SAPシステムからの画像認識うまくいきました。
ありがとうございます。
Image ExistsのAccuracyは数値は、0.9がベストでした。