ホームページ  >  に質問  >  本文

Selenium で「StaleElementReferenceException」エラーを回避する方法

<p>Java で多くの Selenium テストを実装していますが、<code>StaleElementReferenceException</code> が原因でテストが失敗することがあります。 </p> <p>テストをより安定させるための方法をいくつか提案してもらえますか? </p>
P粉920835423P粉920835423425日前590

全員に返信(2)返信します

  • P粉899950720

    P粉8999507202023-08-22 15:30:51

    私もかつてこの問題に遭遇しましたが、知らないうちにページ上で BackboneJS が実行されており、私がクリックしようとしていた要素がそれによって置き換えられました。私のコードは次のとおりです。

    リーリー

    これは、もちろん機能的には以下のコードと同じです。

    リーリー

    時々発生するのは、検索とクリックの間に、JavaScript が checkoutLink 要素を置き換えることです。

    リーリー

    これにより、リンクをクリックしようとすると StaleElementReferenceException 例外が発生します。 WebDriver に JavaScript の実行が完了するのを待つように指示する信頼できる方法が見つからなかったので、これが最終的に解決する方法でした。

    リーリー

    このコードは、クリックが成功するかタイムアウトに達するまで、StaleElementReferenceException 例外を無視してリンクのクリックを試行し続けます。このソリューションが気に入っているのは、再試行ロジックを記述する手間が省かれ、WebDriver の組み込み構造のみを使用できるためです。

    返事
    0
  • P粉343141633

    P粉3431416332023-08-22 13:04:24

    これは、ページ上で行われる DOM 操作によって要素が一時的にアクセス不能になった場合に発生する可能性があります。このような状況に対処するには、最終的に例外がスローされるまで、ループ内で要素へのアクセスを複数回試行します。

    darrelgranger.blogspot.com のこの優れたソリューションを使用してみてください:

    リーリー

    返事
    0
  • キャンセル返事