隐式等待

对页面设置隐式等待,挂起线程,直到页面元素刷出或等待阀值;

WebDriver driver = new FirefoxDriver();
driver.get("<http://test.com>");    
//等待10s,如果10s后元素没有出现,抛出异常  org.openqa.selenium.NoSuchElementException      
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
((JavascriptExecutor)driver).executeScript("style.border = \"10px solid red\"",element);

显式等待

显式等待可以自定义等待的条件,用于更加复杂的页面等待条件;

显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断;

只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑,如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。

WebDriver driver = new FirefoxDriver();
driver.get("<http://test.com>");    
        
//显示等待直到id="test"的元素出现或阀值上限;
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("test")));
WebElement element = driver.findElement(By.id("test"));
((JavascriptExecutor)driver).executeScript("style.border = \"10px solid red\"",element);