首頁 > Java > java教程 > 主體

如何處理動態網頁 Selenium 中的「過時元素參考」錯誤?

Barbara Streisand
發布: 2024-11-06 00:24:02
原創
444 人瀏覽過

How to Handle

錯誤處理:修復動態連結的「陳舊元素引用」

在動態Web 期間,Web 元素可能會變得陳舊並與頁面文檔分離頁面變更。當嘗試與這些元素互動時,這可能會導致“過時元素引用”錯誤。當瀏覽載入新內容的選單或標籤時,會出現一種特殊情況。

在提供的範例中,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 區塊中的元素引用,確保使用最新的引用互動。這有效地緩解了「過時元素引用」錯誤,並能夠在動態網頁中成功導航。

以上是如何處理動態網頁 Selenium 中的「過時元素參考」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!