0

「クリック」に失敗することがあります。
▼の暫定対策で回避中です。
☆の価値観で貫いてるシナリオです。
主に★の周辺について、良さげな方法/アイデアを教えてください。
その他、気づき等あればお知らせいただけると嬉しいです。

 
 
場面

  • Webシステムのモーダル画面
  • 日付と時間帯の表
  • 希望枠のラジオボタンをクリックする場面
  • 表示された1週間分の表が希望枠リストの範囲外の場合等でモーダル画面を一旦閉じたい
  • モーダル画面の下にある閉じる/予約ボタンのうち、閉じるボタンを使用中

<button type="button" class="aaa bbb ccc" ng-xxx="cancel()"> 閉じる </button>

  • ※ AngularJSがふんだんに使われている、シナリオ作成者泣かせのシステム
  • ※ 枠の選択は[搭乗便の選択]に近いイメージ

予約便の変更(航空券購入後の手続き)|ANA
https://www.ana.co.jp/ja/jp/biz/guide/3_6.html

  • ☆ Attendedなシナリオで、どうしても安定して最速で駆け抜けたい

 
 
症状

  • クリックに失敗することがある
  • 「SPVエラー情報収集」の理由相当ワードは「element click intercepted」

 
 
確認済みの情報

https://winactor.com/questions/?q=element+click+intercepted

https://winactor.com/questions/question/【wa0028】「spvエラー情報収集」でエラーの詳細を調べ/

https://winactor.com/questions/question/【wa0035】ブラウザ操作のエラー対応方法_「クリック/

https://winactor.com/questions/?q=ブラウザ関連ライブラリのエラーと対策のバリエーション

 
 
環境

  • WinActor7211
  • Chrome10X
  • WebDriver制御
  • ChromeDriverもChromeと全桁同じバージョン

 
 
現状に至る経緯

  • Loadingのぐるぐる終了待ちは「属性値取得」で満足に近い精度で制御できるようになった

https://winactor.com/questions/?q=読込完了待ちのバランスポイントを見出したい

  • Ver730未満なので、「状態変化待機(要素)」が使えない

https://winactor.com/questions/question/【wa0115】ライブラリ「状態変化待機要素」の待機条/

  • この3つを担保したい

    • 1)Xpathで指定される要素が取得されるまで
    • 3)指定した要素が表示されるまで
    • 5)指定した要素が有効になるまで
  • 代わりに3つをがっちゃんこしたライブラリを使用中
    • 「要素数取得」:1以上(SeleniumのPresent相当のつもり)
      Selenium IDE コマンドリファレンス (2019/09版 : Selenium IDE v3.12.0 [全96コマンドを徹底解説]) #テスト - Qiita
      https://qiita.com/oh_rusty_nail/items/77782973b4152992017b#assert-element-present--verify-element-present
      https://winactor.com/questions/question/【wa0048】23_ブラウザ関連の「要素数取得」の使い方/
    • 「有効無効状態取得」:有効(SeleniumのEnabled相当のつもり)
    • 「属性値取得」:disabled属性の値がFalse
      【Selenium】要素の有効・無効(disabledの有無)を判定する:is_enabled() | OFFICE54
      https://office54.net/python/scraping/selenium-is-enabled
    • 「属性値取得」のがっちゃんこは不要だったのかも、、
    • 上部に戻ってクリックを使用中

    https://winactor.com/questions/question/ページ上部に戻ってクリックを作ってみた/

     
     
    ★ 伺いたいこと

    • 「要素数取得」「有効無効状態取得」「属性値取得」以外を組み合わせる余地
    • なるべく迂回せずに(安定かつ最速で)「element click intercepted」を回避する方法

     
     
    ▼ 試したこと

    • 手前でたとえば1秒待機すればクリックに成功する

     
     
    ★ 原因の見立て

    • 事実とリファレンスを総合すると、要素の配置が完全に済むまでに要素どうしが重なってる瞬間があったりするのかも
    • 見えないからイマイチ信用し切れず
    • この瞬間、どうにかして視認できないだろうか
    • 工夫の余地はないものか
      https://winactor.com/questions/question/フレームを可視化してみた/
    • たとえば自前CSSを優先適用させて色を着ければ、Present/Enabled/Disabledあたりも区別できるようになるのかどうか
    • たとえば邪魔してる要素をずらすとか最前面にするみたいなアクティブな攻めかたはないものか

     
     
    ▼ きっと有効な抜本対策

     
     
    ▼ 投稿前の気づきとテスト

    • モーダル画面は右上の×ボタンでも閉じられる
    • document.querySelector('span[属性="値"]').click();
      → 閉じられた
    • フロー内でも安定して閉じられた
    • JavaScript強し
    • 数パーツを割いたからやっぱり待機と比べちゃう

     
     
    改めての希望

    • 「現状に至る経緯」と「★ 伺いたいこと」の延長線上で、あとひとつくらい何かがどうにかなるのさえ待てば、安定最速で駆け抜けられそう
    • できればそれを掘り当てたい
    anothersolution 新しいコメントを投稿
    回答とコメントは、会員登録(無料)で閲覧できるようになります。