1

トラブルシュートからの収穫のお裾分けです。
「スパルタ式、バンザイ」な内容です。
「わたしならこうする」「これもオススメ」「こんなスマートな方法もある」があったら教えてください。

 

状況

  • 作った端末で安定して想定通りに動く、WebDriver制御のブラウザ操作シナリオ
  • 実行環境の動作確認で不具合報告あり

 

環境

  • WinActor721
  • Chrome9x

 

シナリオ

画面A
 リンクのクリックで隣のタブに画面Bが開く
 次のウィンドウへ移動

画面B
 後判定繰返:無限ループ
  正常系
   テーブルスクレイピング
   繰り返し終了
  異常系
   何も置かない

 

症状

  • 無限ループを抜けない
  • 「テーブルスクレイピング」の出力ファイル(ローカル)が更新されない(更新されるときもある)

 

原因の切り分け

  • 該当の「テーブルスクレイピング」単体でThe element is not found
  • 作った環境でも実行した環境でもXPathでお目当てのテーブルが一意にヒットする
  • 「値の取得」でもThe element is not found
  • //titleや//bodyはエラーにならない
  • 「次のウィンドウへ移動」「テーブルスクレイピング」の順に単体で実行したらエラーにならず、出力ファイルが更新された
  • 「次のウィンドウへ移動」は[異常時の移動先]を最後にしてあったものの、ターゲットが2ウィンドウの場合、次のウィンドウが開ききってない状態では最後=最初っぽい

 

安定化に繋がった対策

  • 「次のウィンドウへ移動」を「例外処理」の異常系にスライド

 

ほかによぎった対策

  • ウィンドウハンドルを取得して「任意のウィンドウへ移動」
    (ジャストフィットな場面ではなさそうな気がした)
  • 指定タイトルのウィンドウへ移動

https://winactor.com/questions/?q=指定タイトルのウィンドウへ移動

  • 「次のウィンドウへ移動」の手前で「指定時間待機」
    (一旦は1秒待機を追加しようとした)

 

雑感

  • スパルタ式はテーブルの取得を担保する目的だった
    (ページの読み込み待ちも兼ねる相当にもなっていた)
    (Ver.7.4なら「読み込み完了待ち」を使う場面かも)
  • ウィンドウの移動は担保してなかった
    (担保が必要だった場面の経験がなかった)
  • 「指定時間待機」はバケツが溢れたらアウトだし、余裕を持たせるのはもったいない
  • 安定化に繋がった対策で、若干右往左往する(必ず1度は異常系を経る)ものの超高速
  • 少なくとも人は競争に勝てない
  • 追加パーツを盛り込まずに、時短と安定を得られた

 

教訓

  • Ver.7系は速い
  • ときに「次のウィンドウへ移動」等の担保も必要
  • 対症療法の「指定時間待機」は問題の先送りになりがち
  • そもそもエラーを発生させない根治療法を見出すことの価値を大切にしたい
  • スパルタ式、バンザイ

 

今日見つけたイベント情報

WinActorは止まらない~止まらないシナリオ作りのコツ~ - connpass
https://rpacommunity.connpass.com/event/267456/

  • 2022/12/02(金)、RPACommunityのイベントで「止まらないシナリオ作り」が学べるようなので楽しみ
  • 11/23現在、まだお席に余裕がある模様

 

思い

  • 「〜ウィンドウへ移動」系で担保がマストなら、機能として織り込んでほしい
    (ユーザーが意識しないで済めばありがたい)
  • 現状のライブラリの想定は、きっと[移動結果]と[異常時の移動先]をキャッチしてスパルタ式を組むこと
  • 「任意のウィンドウへ移動」は[移動結果]とかのオプションがないため、担保が必要なら、次のアクションに成功するまでループで待つようなオリジナルの工夫が求められそう
  • 今回のように「テーブルスクレイピング」に成功しない場合があるみたいな症状から、ウィンドウ移動に失敗してるという原因に辿り着くのは、なかなか難しかった
anothersolution 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。