1.隐式等待(Implicit Wait)
driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);
隐式等待是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间, 它的影响是全局的,每次Driver执行 找不到元素都会等待此处设置的时间。
2.显式等待(Explicit Wait)
显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断。
显式等待可以自定义等待的条件,用于更加复杂的页面等待条件。
等待的条件 |
WebDriver方法 |
页面元素是否在页面上可用和可被单击 |
elementToBeClickable(By locator) |
页面元素处于被选中状态 |
elementToBeSelected(WebElement element) |
页面元素在页面中存在 |
presenceOfElementLocated(By locator) |
在页面元素中是否包含特定的文本 |
textToBePresentInElement(By locator) |
页面元素值 |
textToBePresentInElementValue(By locator, java.lang.String text) |
标题 (title) |
titleContains(java.lang.String title) |
只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑
如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。
public static WebElement waitForElement(WebDriver driver,By by){
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(by));
return element;
}
3.Sleep 线程休眠
Thread.sleep();