古い要素参照: 原因の解明と解決策の発見
Selenium では、「古い要素参照」例外が発生するとイライラすることがあります。これは、参照されている要素がページ ドキュメントに関連付けられていないことを示しているためです。このエラーは、DOM に動的読み込みやページ ナビゲーションなどの大幅な変更が加えられたときによく発生します。
この問題を解決するには、例外をトリガーしたコード行を正確に特定することが重要です。提供されたコードでは、エラーの原因となる行は次のとおりです。
<code class="java">driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();</code>
この行は、フォーマットされた XPath 文字列に基づいて要素をクリックしようとします。ただし、クリックが実行されるまでに基になる要素が削除または変更されている可能性があり、古い要素参照例外が発生します。
この問題の根本的な原因は、コードの実行時に DOM が安定していないことです。 。これに対処するには、要素をクリックする前に要素が再度利用可能になるまで待機する再試行メカニズムを実装することを検討できます。このような再試行の例を次に示します。
<code class="java">try { // Attempt to click on the element driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); } catch (org.openqa.selenium.StaleElementReferenceException ex) { // Element is not yet available, so wait and try again Thread.sleep(200); // Replace with appropriate wait time driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); }</code>
クリックを再試行する前に待機時間を導入することで、コードは DOM に安定するのに十分な時間を与え、続行する前に要素が存在しクリック可能であることを確認します。
以上がSelenium で「古い要素参照」例外を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。