显式等待和隐式等待是WebDriver中两种常用的等待方式,它们都可以用来等待特定的条件满足后再继续执行代码。
显式等待(Explicit Wait):使用WebDriverWait类来实现,可以根据特定条件等待元素出现、可见、可点击等。
示例代码:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("exampleId")));
// 等待元素出现并可见后,继续执行下一行代码
通过ExpectedConditions
类提供的方法,可以等待元素的可见性、可点击性、存在等不同条件。
隐式等待(Implicit Wait):使用driver.manage().timeouts().implicitlyWait()
方法来设置等待的超时时间,然后在查找元素时会等待指定的时间,如果在超时时间内找到了元素,则继续执行下一行代码,否则抛出NoSuchElementException
异常。
示例代码:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement element = driver.findElement(By.id("exampleId"));
// 等待10秒内找到元素,如果超时未找到则抛出异常
隐式等待适用于整个WebDriver会话的生命周期,只需要设置一次,然后在之后的查找元素中会自动等待指定的时间。