要素が消滅するまで待つが正常に動作しない

アタッチウィンドウの中にウィンドウ内の操作を入れています。
その中の一番最後に保存ボタンを押下して次に行く操作があり、保存完了前に閉じるボタンを押してしまうことがあるため、保存ボタンが非アクティブになるのを待機するようにしています。
スクリーンショット 2021-09-03 111008
(※画像にはアタッチウィンドウが写っていませんがもっと外側に置いてあります。)

保存後の保存ボタンは以下のようになり、
「aastate = ‘フォーカスできます。’」から「aastate = ‘利用できません。’」変わるためこれを利用しています。
保存後

ほとんどはこれでうまくいくのですが、1日に2回はタイムアウトでエラーになってしまいます。
タイムアウトの時間を延ばしても意味がなく、明らかに要素がないのにダメなときは何度リトライしてもダメです。
一度停止して再実行すればうまくいくことが多いです。

このほかの部分でこのようなことは滅多におきず、この要素の消滅を待つのセレクターを取り直したりしてみても、エラーで止まってしまうと時とうまくいく時でセレクターの内容は変わりません。

この現象の原因で考えられることはありますでしょうか。

※追記
同じ保存ボタンの非アクティブ待機を別の場所にも入れており、そちらでも同様の症状が起きることがありました。

「要素の消滅…」アクティビティは、今回のように原因の特定が困難な事象が起きがちです。

なので、「要素の存在を確認」アクティビティに替えて、セレクターの有無で判定して処理した方が、動作も安定するかと思います。

1 Like

そうだったのですね。これまではここでエラーになることはなかったのに突然止まるようになってしまいました。

この時、要素がすぐになくなれば良いのですが、保存に時間がかかることがあるので最大時間をタイムアウトに設定する必要があると思います。
保存がすぐに終わった場合でもタイムアウトの間待機してしまうことになりますか?

対象のセレクターが見つかれば直後にTrue、
タイムアウトになるとFalseです。

なので、保存がすぐに終わった場合に、待機時間はありません。

保存「クリック」の後ろに後判定の繰り返しを配置し、中に
────────────────────────
「子要素を取得」 子要素:aastate 変数: str_aastate

「待機」 3秒とか

後判定条件:str_aastate = “フォーカスできます。”
────────────────────────
とすれば、3秒ごとに「保存」ボタンのセレクター状態を繰り返し確認し、変化していれば
繰り返しを抜けて後続処理に進む、という処理ができます。

言葉足らずでした。「フォーカスできます」のほうを消滅まで待つようにしていたためセレクターはそのままで考えていました。
要素の存在有無の場合は「利用できません」のほうを使えば、確かにタイムアウトまで待つ必要はないですね。

なるほど、子要素を取得はほとんど使ったことがありませんでした。
新たな発見をありがとうございます。
とりあえず要素の消滅〜は今後は使わないようにします。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.