我們是否有任何通用函數來檢查 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 函數來驗證完整的網頁載入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!