JavaScriptで表示されるポップアップウィンドウに関する質問です。
JavaScriptで表示されるポップアップウィンドウの中に「はい」と「いいえ」の2つのボタンがあり、
「はい」ボタンを押下するまでに30秒以上掛かります。
※ポップアップ表示時は「いいえ」ボタンがアクティブになっています。
レコーディング機能を用いて、デスクトップ→Clickで実装しましたが、
ポップアップウィンドウが画面上に表示されてから「はい」ボタンが押下されるまでに
30秒以上掛かります。
Image→Mouse Clickで実装しても同様で、「はい」ボタンが押下されるまでに30秒以上掛かります。
ホットキーで【Tab】(で「はい」ボタンへ移り)→【Enter】での実装も試しましたが、
こちらは【Enter】が実行されるまで60秒くらい掛かりました。
UiPathで、JavaScriptで表示されるポップアップウィンドウのボタンを押下するには、
時間が掛かるものなのでしょうか?
それとも実装方法が悪いのでしょうか?
せめて3~5秒以内に「はい」ボタンが押下されるようにしたいです。
どなたか解決策をご存じの方がいらっしゃいましたら、ご教示いただけたらと思います。
よろしくお願い致します。
Honoka
(Honoka Hayasaka)
2
Attach Browserを使用している場合、ホップアップをクリックする部分と、その前後の処理だけ完全セレクタを使用してみてください。
内部的にブラウザとの接続が「ホップアップ表示のため次に進めない」可能性があるので、それで解決することがあります。
早々のご回答ありがとうございます。
〉ホップアップをクリックする部分と、その前後の処理だけ完全セレクタを使用してみてください。
すみません。
初心者なもので上記でおっしゃっていることが良く理解できないのですが、「完全セレクタを使用」というのは
どのようにすればよろしいのでしょうか?
ポップアップの前後に関しましては、
①レコーディング(Web)で、IE上の画面A内のボタンをクリック
②JavaScriptのポップアップが表示される
JavaScriptポップアップ内の「はい」ボタンをクリックしてポップアップが閉じられる・・・ここで30秒以上掛かる
③レコーディング(Web)で、IE上の画面B内のボタンをクリック
となっておりまして、①と③のボタンクリックは一瞬で完了します。
Honoka
(Honoka Hayasaka)
4
完全セレクターと部分セレクター
(Web)レコーディングを使用しているとのことで、おそらく記録した部分は、Attach BrowserまたはOpen Browserアクティビティの内側に、個々の処理が入っている形だと思います。
その状態だと、
①レコーディング(Web)で、IE上の画面A内のボタンをクリック
に該当する部分は、Clickアクティビティが生成され、そのセレクタ(プロパティの Input > Target の中にあるSelectorの文字列)は
<webctrl aaname='リンクの文字列' tag='A' />
のように、1行だけになっていると思います。(細かい属性の表記は違うと思いますが)
これが「部分セレクタ」と呼ばれるもので、(Attach BrowserまたはOpen Browserで選択された)ブラウザありきで、「どのブラウザか」という情報は省略した上で、そのブラウザ(部分)を選択する、という設定になります。
これに対して「完全セレクタ」というのは、「どのウィンドウのどこ」というように必要な情報を全て持たせてやる状態を指します。
完全セレクタを作る方法はいくつかありますが、いちばん簡単なのはBasic Recorderを使用することです。既にブラウザが起動している状態で、Basic Recorderを使用して、一連の操作を記録してみてください。
個々の操作に対して、Clickアクティビティが生成されますが、そのセレクタは
<html title='ページタイトル' />
<webctrl aaname='リンク文字列' tag='A' />
のように、「どのブラウザの(ページタイトル、ブラウザの種類)」「どのリンク」というような形式になると思います。
ですので、ポップアップが出る前~ポップアップの「はい」をクリックするところまでを、Basic Recorderで記録しなおし、記録されたClickアクティビティを差し替えることで、動作が改善すると思います。
レコーダーについては、UiPath Academyの
https://www.uipath.com/ja/tutorials/recording-jp
こちらで一通り扱ってるので、あわせて確認してみてください。
Yoichi
(Yoichi)
5
こんにちは
対象のサイトがみれないのでなんともですが
Click Activityのプロパティで
Target - WaitForReady の値を
INTERACTIVE から NONE に変えてやると
幸せになれるかもしれません。
もし読み込みタイミングの問題が懸念される場合は、事前にElementExistなどで要素の出現をチェック/待機するほうが良いかもです。
2 Likes
お礼が遅くなり大変申し訳ございません。
ご教示いただいた手順を実施したところ、スムーズにポップアップウィンドウが
クリックされるようになりました。
この度はありがとうございました。
kaishii
(Kazuyuki)
7
同様の事例として、JSPで表示しているダイアログ(OKボタンのみ)
のOKボタンクリックに2分近く要しています。
色々書き込みを調査して
・完全セレクタを使用する
・WaitForReadyをNONEにする
・タイムアウトを短くする
・セレクタにURLを含める
・Send Hotkeyでenterやスペースを送る
等々の対策を実施しましたがいっこうに改善しません。
さらなる対策案がございますでしょうか?
1 Like
Yoichi
(Yoichi)
8
こんにちは
対象のサイトがみれないのでなんともですが、
まずは切り分けのためにも当該Click Activityなりで本当に2分掛かっているか確認したほうが良いように思えます。
具体的にはClick Activityの前後にLog Messageを配置して時間を計測する等になるかと思います。
いかがでしょうか?
kaishii
(Kazuyuki)
9
Yoichi様
コメントありがとうございます。
ダイアログのボタンクリックの箇所で止まっていることは間違いないです。
この処理はループ処理になっており、入力リストに従って同じ処理を繰り返す物です。
その中にダイアログのボタンをクリックする箇所があります。
なぜか瞬時にダイアログのボタンがクリックされることもあります。
順調だなと思っていると突然ダイアログが開いたまま処理が停止していまい、
2分くらい待つとクリックされて次に進む、というような状況です。
ダイアログのボタンをクリックする前に、findElementでダイアログの存在を確認しているので、
タイミングの問題でもないような気がします。
Yoichi
(Yoichi)
10
こんにちは
2分という数字が引っ掛かっていまして、たとえばFindElementで30秒、Clickで30秒などで複数要因が積み重なって2分となっている可能性を切り分けるべきと思いPOSTさせていただきました。
そのような可能性はございませんでしょうか?
kaishii
(Kazuyuki)
11
Yoichi様
私もその点は考えました。
AttachWindowの中にAttachiBrowserがあって、さらにその中にClickがあります。
デフォルトのタイムアウトは30秒なので、合計で1分30秒です。
しかし、この3つのアクティビティのプロパティで、タイムアウト値を5秒に縮めています。
Yoichi
(Yoichi)
12
こんにちは
事象の把握のためには、対象サイトなり、ワークフローのxamlなりもう少し材料がほしいところですね。
コンテナのネストはあまり良くないように思えますので、ネストをやめるとか、今までの情報ではそれくらいでしょうか...
kaishii
(Kazuyuki)
13
いろいろありがとうございました。
もう少し一人で悩んでみます。