ブラウザ関連のエラーをスパルタ式で回避してみた
トラブルシュートからの収穫のお裾分けです。
「スパルタ式、バンザイ」な内容です。
「わたしならこうする」「これもオススメ」「こんなスマートな方法もある」があったら教えてください。
状況
- 作った端末で安定して想定通りに動く、WebDriver制御のブラウザ操作シナリオ
- 実行環境の動作確認で不具合報告あり
環境
- WinActor721
- Chrome9x
シナリオ
画面A
リンクのクリックで隣のタブに画面Bが開く
次のウィンドウへ移動画面B
後判定繰返:無限ループ
正常系
テーブルスクレイピング
繰り返し終了
異常系
何も置かない
症状
- 無限ループを抜けない
- 「テーブルスクレイピング」の出力ファイル(ローカル)が更新されない(更新されるときもある)
原因の切り分け
- 該当の「テーブルスクレイピング」単体でThe element is not found
- 作った環境でも実行した環境でもXPathでお目当てのテーブルが一意にヒットする
- 「値の取得」でもThe element is not found
- //titleや//bodyはエラーにならない
- 「次のウィンドウへ移動」「テーブルスクレイピング」の順に単体で実行したらエラーにならず、出力ファイルが更新された
- 「次のウィンドウへ移動」は[異常時の移動先]を最後にしてあったものの、ターゲットが2ウィンドウの場合、次のウィンドウが開ききってない状態では最後=最初っぽい
安定化に繋がった対策
- 「次のウィンドウへ移動」を「例外処理」の異常系にスライド
ほかによぎった対策
- 「次のウィンドウへ移動」の手前で「指定時間待機」
(一旦は1秒待機を追加しようとした)
雑感
- スパルタ式はテーブルの取得を担保する目的だった
(ページの読み込み待ちも兼ねる相当にもなっていた)
(Ver.7.4なら「読み込み完了待ち」を使う場面かも) - ウィンドウの移動は担保してなかった
(担保が必要だった場面の経験がなかった) - 「指定時間待機」はバケツが溢れたらアウトだし、余裕を持たせるのはもったいない
- 安定化に繋がった対策で、若干右往左往する(必ず1度は異常系を経る)ものの超高速
- 少なくとも人は競争に勝てない
- 追加パーツを盛り込まずに、時短と安定を得られた
教訓
- Ver.7系は速い
- ときに「次のウィンドウへ移動」等の担保も必要
- 対症療法の「指定時間待機」は問題の先送りになりがち
- そもそもエラーを発生させない根治療法を見出すことの価値を大切にしたい
- スパルタ式、バンザイ
今日見つけたイベント情報
WinActorは止まらない~止まらないシナリオ作りのコツ~ - connpass
https://rpacommunity.connpass.com/event/267456/
- 2022/12/02(金)、RPACommunityのイベントで「止まらないシナリオ作り」が学べるようなので楽しみ
- 11/23現在、まだお席に余裕がある模様
思い
- 「〜ウィンドウへ移動」系で担保がマストなら、機能として織り込んでほしい
(ユーザーが意識しないで済めばありがたい) - 現状のライブラリの想定は、きっと[移動結果]と[異常時の移動先]をキャッチしてスパルタ式を組むこと
- 「任意のウィンドウへ移動」は[移動結果]とかのオプションがないため、担保が必要なら、次のアクションに成功するまでループで待つようなオリジナルの工夫が求められそう
- 今回のように「テーブルスクレイピング」に成功しない場合があるみたいな症状から、ウィンドウ移動に失敗してるという原因に辿り着くのは、なかなか難しかった
anothersolution 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。
新規登録