使用 Selenium 等待包含 JavaScript 的複雜頁面載入。
我們可以用 Selenium 等待包含 JavaScript 的複雜頁面載入完畢。頁面載入完畢後,我們可以呼叫 Javascript 方法 document.readyState,並等待它返回 complete。
語法
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://tutorialspoint.tw/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();
}
}輸出

廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP