やりたかったことと現状:
・ブラウザはFireFoxで、PDF表示するのにfoxit readerを使っている。
・ブラウザからPDFを別タブで開き、印刷してから、タブを閉じている。
・これまでは、PDFで開くデータが多い場合に、データが読み込み終わる前に印刷処理が始まってしまうことがある(この場合、印刷データがありませんというエラーになって止まる)。十分な待機時間を取ったらうまくいくが、これで安心できるかというと、うーん。
・印刷が完全に終わってからタブを閉じるということも、UiPathでは検知・処理できないので、「処理が終わったらOKボタンをクリックしてね」というダイアログを出して待機するようにしていた。
理想:
・待機時間を固定値でとらないようにしたい。データが少ない場合は少ない待機時間で、多い場合は逆に。
・ダイアログのOKボタンをクリックしないで、最後まで自動化したい。
やったこと:
自分の業務の場合は、楽天RMSの受注管理からの出力で、「全部で〇件」と画面上に表示されているので、この件数分、待機時間をとるようにした。
実際には、基本待機時間を3秒とり(全1件であっても最初のタブを開くのに時間がかかるため)、さらに1件につき1秒追加、というようにした。
ポイント:
ブラウザの要素から取得したテキストを、変数cntに入れる。
ストリング型の変数variable1に、“00:00:” & cnt.ToString をセット。
タイムスパン型のvariable2に、Timespan.Parse(variable1) をセット。
手間取ったこと:
楽天の「全〇件」のテキストを取得するのに、正規表現を使ってやろうとして、試行錯誤した
その後、自分の使いたい画面では数字にクラスが定義されていたので、必要なかった・・・。
〇件=〇秒の待機時間を加算とするために、初めてdatetime型を使った。変換やらを、理解するのに時間がかかった。
以下のリンクを参考にさせていただいた。この情報がなければできなかったので助かった。
UiPathで年月日を加工しよう – RPAひろば