Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การรอให้หน้าเว็บที่มี JavaScript ซับซ้อนโหลดเสร็จด้วย Selenium

สามารถรอให้หน้าเว็บที่มี JavaScript ซับซ้อนโหลดเสร็จด้วย Selenium โดยตรวจสอบ document.readyState ให้คืนค่า 'complete' แล้วค่อยดำเนินการต่อ

ไวยากรณ์ (Syntax)

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

จากนั้นใช้ Explicit Wait รอเงื่อนไข presenceOfElementLocated สำหรับองค์ประกอบที่ต้องการ ทำงานภายใน try-catch block

ตัวอย่างโค้ด (Java)

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");
    
    JavascriptExecutor j = (JavascriptExecutor)driver;
    if (j.executeScript("return document.readyState").toString().equals("complete")) {
      System.out.println("Page loaded properly.");
    }
    
    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();
  }
}

ผลลัพธ์

ภาพหน้าจอแสดงการทำงานของโค้ด (ดูภาพตัวอย่าง)