Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Chờ trang web phức tạp với JavaScript tải xong bằng Selenium


Chúng ta có thể chờ một trang web phức tạp với JavaScript tải xong bằng Selenium. Sau khi trang tải xong, chúng ta có thể gọi phương thức JavaScript document.readyState và chờ cho đến khi trả về complete.

Cú pháp

JavascriptExecutor js = (JavascriptExecutor)driver; 
js.executeScript("return document.readyState").toString().equals("complete");

Tiếp theo, chúng ta có thể xác minh xem trang đã sẵn sàng cho bất kỳ hành động nào, bằng cách sử dụng khái niệm explicit wait trong đồng bộ hóa. Chúng ta có thể chờ điều kiện mong đợi presenceOfElementLocated cho phần tử. Chúng ta sẽ triển khai toàn bộ quá trình xác minh trong khối try-catch.

Ví dụ

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.openqa.selenium.JavascriptExecutor; 

public class PageLoadWt { 
  public static void main(String[] args) { 
    System.setProperty("webdriver.chrome.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe"); 
    WebDriver driver = new ChromeDriver(); 
    driver.get("https://www.tutorialspoint.com/index.htm"); 
    // Javascript Executor để kiểm tra trạng thái sẵn sàng trang
    JavascriptExecutor j = (JavascriptExecutor)driver; 
    if (j.executeScript("return document.readyState").toString().equals("complete")) { 
      System.out.println("Page loaded properly."); 
    } 
    // Điều kiện mong đợi presenceOfElementLocated
    WebDriverWait wt = new WebDriverWait(driver, 3); 
    try { 
      wt.until(ExpectedConditions.presenceOfElementLocated(By.id("gsc-i-id1"))); 
      driver.findElement(By.id("gsc-i-id1")).sendKeys("Selenium"); 
    } catch (Exception e) { 
      System.out.println("Element not located"); 
    } 
    driver.quit(); 
  } 
}

Kết quả

Chờ trang web phức tạp với JavaScript tải xong bằng Selenium