ポップアップ画面が出たら・・・の処理

こんにちは。

以下のようなケースは、どのアクティビティを使うのが有効でしょうか?
いろいろ試したのですが、思うように組めません

◆やりたいこと
・あるWebシステムを開いたときに、ポップアップ画面が出る場合がある
・ポップアップ画面には複数の種類があり、それぞれに後続処理が変わる
・ポップアップ画面が上がるケースは10%以下で、ほとんどはそのまま通常処理が進む

◆試したこと
①「要素が出現したとき」を使って、出力されるメッセージを基にIF分を使って複数の後続処理わけ
→検出したりしなかったりする

②「要素の有無を検出」して、出力されるメッセージを基にIF分を使って複数の後続処理わけ
→検出したりしなかったりする。①より検出率が上がるが遅い

②「トライキャッチ」を使って、出力されるメッセージ毎にCatchを作成し後続処理を記入
→エラーと認識しなかったのかCatchに入らない

どうぞ、よろしくお願いいたします。

こんにちは

今回異常ケースが10%以下とのことなので、もし「ポップアップ表示時でも通常処理を進めた時、ポップアップが出ていることにより後続処理で例外が発生するor異常検知できる」ならば、この例外や異常をキャッチしてポップアップの処理を行ったほうが全体のスループットは高くなるケースが多いと思います。

上記が難しければ①や②の検出できない要因を探る&タイムアウト時間のチューニングを行うといった検討になるのではと思います。

こんにちは

実際の出力メッセージを見ないとわかりませんが

要素の有無を検出(Element Exists)アクティビティを使います。存在しているかどうかの判定結果が入ります。 結果はTrue(存在していた)またはFalse(存在しなかった)のどちらか。

Falseは、ポップアップでないので通常処理。
Trueは、10%以下のポップアップだけを判定。

ポップアップ内のメッセージが複数あるならポップアップ部分を判定しメッセージごとに
複数の後続処理を頑張って作成する。

メッセージが沢山ありすぎて処理の作りこみが無理なら処理は中断させる。その後は人が判断し手動で対応する感じです

10%以下、何かメッセージ出ても通常処理進むというのが理解できませんでした。ワーニング程度のメッセージで処理進めているのなら問題ないです。

Yoichiさん、koretaさん、ありがとうございます。

①でElement Existsを使って検出しているのですが、実際に該当のポップアップ画面を検出している状態でも、処理が先に進みます。タイムアウトの調整はしているつもりなのですが、処理時間にムラがあり(処理データの大小、ネットワークやシステム不可の影響)、うまく設定が出てきません。

重ねての質問ですが、タイムアウトを設定した場合、その時間以内に要素を見つければ、見つかったタイミングで後続処理に進むんでしょうか?(そうだと思っています)。
それとも設定した時間まで待って後続処理に進むんでしょうか?

前者と思い、タイムアウトを5分設定していますが、5分経ってもElement Exists=Trueにならない場合、Elementのセレクターの設定に不備があるとなるかと思うんですが、「セレクターの編集画面」で」「ハイライト」をすると赤字で検出されます。

どのようなことをが考えられますでしょうか?

======

Koretaさんが理解できなかったとおっしゃる点、補足します。

◆10%の意味は、「全体の処理件数のうち、該当の処理をしたい(ポップアップが出る)のが10%程」という意味でした。Element Existsを使うと、関係のない90%の処理でも検出を行うためか、全体の処理が遅くなってしまいます。これは仕方かたがないのかな?ほかにいい方法がないのかな?と思ったため、質問をさせていただきました。

◆何かメッセージ出ても通常処理進むの意味は、「実際には該当のポップアップ画面が出ているのに、後続処理に進んでしまう」という意味でした。

うまく説明できずに、すみませんでした。

こんにちは

ご認識の通り前者になります。

ありがちなケースとしては、例えばトップレベルウインドウの指定がユニークになっていない等で想定しているウインドウと別のウインドウを見に行っている等があります。
特にポップアップウインドウ側の指定について、親ウインドウと同じコンテナになっていないかとか、url属性等でユニークになるならそれを加える等が考えられます。属性の追加に関してはUiExplorerを活用いただければと思います。

別ネタとして:

「よーいどん」で一斉にそれぞれ異なる要素を検索して、最初に要素が見つかった処理だけを実行、
その他の要素検索処理を破棄する、なんて進め方もできます。

これは、[Pick]と[Pick Branch]アクティビティを使います。

下の例では、実行ボタンを押した後通常ケース(次画面へ移動)ならば後続処理、
エラーが複数発生する場合に、それぞれ固有のエラー処理を行う、
想定外の挙動をしたときはタイムアウトとして30秒待機して、その後ワークフロー停止、
なんて処理が実現できます。

2 Likes

yoichiさん

タイムアウトの概念、ご説明ありがとうございます。
よく理解できました。

==================

yukinoさん

[Pick]と[Pick Branch]アクティビティの紹介ありがとうございます。

その後、ネットの記事などを参考に、[Parallel]を使って分岐を考えていましたが、うまくいかず困っていました。こちらを使うとうまくいきました!!

警告が出ない場合は、「待機」アクティビティを使えばいいのですね。
勉強になりました。ありがとうございました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.