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(); } }
출력