需要Selenium等待文件準備好
在Selenium中,我們可以透過使用pageLoadTimeout方法等待文件就緒(頁面完全載入)。等待時間將作為此方法的一個引數。
webdriver等待該持續時間以完成頁面載入。如果在頁面載入完後這段時間過去,將丟擲TimeoutException。
語法
driver.manage().timeouts().pageLoadTimeout(3, TimeUnit.SECONDS);
示例
帶有pageLoadTimeout的程式碼實現
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class PageLdTime{ public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe"); WebDriver driver = new ChromeDriver(); //page load wait driver.manage().timeouts().pageLoadTimeout(3, TimeUnit.SECONDS); //URL launch driver.get("https://tutorialspoint.tw/index.htm"); driver.close(); } }
我們還可以透過使用JavaScript執行者等待文件準備好(頁面完全載入)。等待會持續到JavaScript命令document.readyState返回“complete”。
語法
JavascriptExecutor j = (JavascriptExecutor)driver; j.executeScript("return document.readyState").toString().equals("complete");
帶有JavaScript執行者的程式碼實現
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; import org.openqa.selenium.JavascriptExecutor; public class PageldJs{ public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe"); WebDriver driver = new ChromeDriver(); //implicit wait driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); //URL launch driver.get("https://tutorialspoint.tw/index.htm"); try{ // Javascript Executor for ready state JavascriptExecutor j = (JavascriptExecutor)driver; if (j.executeScript("return document.readyState").toString().equals("complete")){ System.out.println("Page in ready state"); } } catch(Exception exe) { System.out.println("Page not in ready state"); } driver.close(); } } }
輸出
廣告