Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

Selenium을 사용하여 JavaScript가 포함된 복잡한 페이지가 로드될 때까지 기다립니다.

<시간/>

JavaScript가 포함된 복잡한 페이지가 Selenium과 함께 로드될 때까지 기다릴 수 있습니다. 페이지가 로드된 후 자바스크립트 메소드 document.readyState를 호출할 수 있습니다. 완료될 때까지 기다립니다. 반환됩니다.

구문

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

다음으로 명시적 대기를 사용하여 페이지가 어떤 작업을 수행할 준비가 되었는지 확인할 수 있습니다. 동기화 개념입니다. 예상 조건 presenceOfElementLocated를 기다릴 수 있습니다. 요소에 대한. try catch 블록 내에서 전체 검증을 구현합니다.

예시

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 to check page ready state
      JavascriptExecutor j = (JavascriptExecutor)driver;
      if (j.executeScript
      ("return document.readyState").toString().equals("complete")){
         System.out.println("Page loaded properly.");
      }
      //expected condition presenceOfElementLocated
      WebDriverWait wt = new WebDriverWait(driver,3);
      try {
         wt.until(ExpectedConditions
         .presenceOfElementLocated
         (By.id("gsc−i−id1")));
         // identify element
         driver.findElement
         (By.id("gsc−i−id1")).sendKeys("Selenium");
      }
      catch(Exception e) {
         System.out.println("Element not located");
      }
      driver.quit();
   }
}

출력

Selenium을 사용하여 JavaScript가 포함된 복잡한 페이지가 로드될 때까지 기다립니다.