ホームページ > Java > &#&チュートリアル > 動的 Web ページの Selenium で「古い要素参照」エラーを処理する方法は?

動的 Web ページの Selenium で「古い要素参照」エラーを処理する方法は?

Barbara Streisand
リリース: 2024-11-06 00:24:02
オリジナル
520 人が閲覧しました

How to Handle

エラー処理: 動的リンクの「古い要素参照」の修正

動的 Web 中に Web 要素が古くなり、ページ ドキュメントから切り離される可能性がありますページが変わります。これにより、これらの要素を操作しようとすると「古い要素参照」エラーが発生する可能性があります。新しいコンテンツをロードするメニューやタブをナビゲートするときに、特定のケースが 1 つ発生します。

この例では、Selenium は複数の同一リンクのリスト内のリンクをクリックしようとします。 「古い要素参照: 要素がページ ドキュメントにアタッチされていません」というエラーは、基礎となるページ構造が変更された後に要素参照が古くなるため発生します。

この問題を解決するには、例外処理を利用して再初期化できます。ページコンテンツがリロードされた後の要素参照。次の変更されたコード スニペットは、このアプローチを示しています。

<code class="java">public static void main(String[] args) throws InterruptedException {
    WebDriver driver = new ChromeDriver();
    driver.navigate().to("url......");
    driver.findElement(By.id("Login1_txtEmailID")).sendKeys("[email&#160;protected]");
    driver.findElement(By.id("Login1_txtPassword")).sendKeys("Testing1*");
    driver.findElement(By.id("Login1_btnLogin")).click();

    List<WebElement> LeftNavLinks = driver.findElements(By.xpath("//*[@id='sliding-navigation']//a"));
    Thread.sleep(1000);
    String ben = "Benefit Status";

    for (WebElement e : LeftNavLinks) {
        String linkText = e.getText();
        System.out.print(i + " " + linkText + "\n");

        if (linkText.equals(ben)) {
            String BenefitStatLi = "//*[@id='sliding-navigation']/li[%s]/a";
            System.out.print(i + " " + linkText + "\n");

            try {
                driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
                driver.findElement(By.xpath("//* [@id='divContentHolder']/div[1]/a[1]")).click();
            } catch (org.openqa.selenium.StaleElementReferenceException ex) {
                driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();
                driver.findElement(By.xpath("//* [@id='divContentHolder']/div[1]/a[1]")).click();
            }
        }
        i++;
    }
}</code>
ログイン後にコピー

例外処理を組み込むことで、try-catch ブロック内の要素参照を再初期化し、最新の参照が確実に使用されるようにします。相互作用。これにより、「古い要素参照」エラーが効果的に軽減され、動的 Web ページ内で正常にナビゲーションできるようになります。

以上が動的 Web ページの Selenium で「古い要素参照」エラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート