需要等到页面完全加载 - 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.com/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.