首頁 > Java > java教程 > 是否有通用的 Selenium 函數來驗證完整的網頁載入?

是否有通用的 Selenium 函數來驗證完整的網頁載入?

Patricia Arquette
發布: 2024-12-29 01:06:10
原創
846 人瀏覽過

Is There a Generic Selenium Function to Verify Complete Web Page Loading?

我們是否有任何通用函數來檢查 Selenium 中的頁面是否已完全載入?

您正在嘗試確定網頁是否已完全載入使用 Selenium 完成載入。儘管您已嘗試使用該程式碼,但即使頁面正在加載,它也不會等待。您尋求一種通用的解決方案,而不是檢查特定元素的可見性或可點擊性的解決方案。

答案:

不,沒有通用的 Selenium方法來確認完全載入網頁page.

說明:

讓我們檢查一下您的程式碼:

new WebDriverWait(firefoxDriver, pageLoadTimeout).until(
          webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));
登入後複製

此程式碼中的pageLoadTimeout變數其實並不對應於真實的pageLoadTimeout () 函數。

但是,對於檢查頁面是否完全載入後,您可以使用 DesiredCapability 或 ChromeOptions 類別將 pageLoadStrategy() 設定為「正常」(其他可能的值包括「none」和「eager」)。以下是範例:

使用所需功能:

DesiredCapabilities dcap = new DesiredCapabilities();
dcap.setCapability("pageLoadStrategy", "normal");
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dcap);
WebDriver driver = new FirefoxDriver(opt);
登入後複製

使用ChromeOptions:

ChromeOptions opt = new ChromeOptions();
opt.setPageLoadStrategy(PageLoadStrategy.NORMAL);
WebDriver driver = new FirefoxDriver(opt);
登入後複製

注意事項:

將PageLoadStrategy 設定為「正常」可確保瀏覽器用戶端已達到 'document.readyState' 等於的狀態「完全的。」但是,這並不能保證所有 JavaScript 和 Ajax 呼叫都已完成。

要解決此問題,您可以使用函數來等待所有 JavaScript 和 Ajax 呼叫完成:

public void WaitForAjax2Complete() throws InterruptedException
{
    while (true)
    {
        if ((Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.active == 0")){
            break;
        }
        Thread.sleep(100);
    }
}
登入後複製

或者,您可以將 WebDriverWait 與 ExpectedConditions結合使用來等待特定事件或元素狀態:

// Wait for a specific part of the page title
new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("partial_title_of_application_under_test"));

// Wait for a specific element to become visible
WebElement ele = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_of_the_desired_element")));
登入後複製

參考:

  • [Selenium IE WebDriver僅適用於調試](https://stackoverflow.com/questions/23791841/selenium-ie-webdriver-only-works-while-debugging)
  • [Selenium 如何管理等待頁面載入? ](https://stackoverflow.com/questions/19750811/selenium-how-to-manage-wait-for-page-load)
  • [Chrome的頁面載入策略驅動程式](https://stackoverflow.com/questions/55985139/page-load-strategy-for-chrome-driver-updated-till-selenium-v3-12-0)

以上是是否有通用的 Selenium 函數來驗證完整的網頁載入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板