需要等到頁面完全載入 - Selenium WebDriver


我們可以使用 JavaScript 執行器在 Selenium webdriver 中等待頁面完全載入。Selenium 可以在 executeScript 方法的幫助下執行 JavaScript 命令。

我們必須將 return document.readyState 作為引數傳遞給 executeScript 方法,然後再驗證此命令返回的值是否為 complete。

語法

JavascriptExecutor j = (JavascriptExecutor)driver;
if (j.executeScript("return document.readyState").toString().equals("complete")){
   System.out.println("Page has loaded");
}

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.JavascriptExecutor;
public class PageLdWait{
   public static void main(String[] args) {
      System.setProperty("webdriver.gecko.driver",
         "C:\Users\ghs6kor\Desktop\Java\geckodriver.exe");
      WebDriver driver = new FirefoxDriver();
      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      //URL launch
      driver.get("https://tutorialspoint.tw/index.htm");
      // JavaScript Executor to check ready state
      JavascriptExecutor j = (JavascriptExecutor)driver;
      if (j.executeScript("return document.readyState").toString().equals("complete")){
         System.out.println("Page has loaded");
      }
      //iterate 50 times after every one second to verify if in ready state
      for (int i=0; i<50; i++){
         try {
            Thread.sleep(1000);
         }catch (InterruptedException ex) {
            System.out.println("Page has not loaded yet ");
         }
         //again check page state
         if (j.executeScript("return document.readyState").toString().equals("complete")){
            break;
         }
      }
   }
}

輸出

更新日期:2021-04-06

5K+ 瀏覽量

開啟你的 職業生涯

透過完成該課程獲得認證

立即開始
廣告
© . All rights reserved.