WebDriver 在操作页面元素等待时间时,提供2种等待方式:一个为显式等待,一个为隐式等待,其区别在于:
1)显式等待:明确地告诉 WebDriver 按照特定的条件进行等待,条件未达到就一直等待。这在等待某个元素需要非常长的时间时非常有效
示例:
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedCondition;
//等待条件未:直到浏览器的标题以selenium 为开头出现才进行后续操作
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>(){
public Boolean apply(WebDriver d){
return d.getTitle().toLowerCase().startsWith("selenium");
}
})
2)隐式等待:告诉 WebDriver 一个最大的超时时间,如果等待的条件在超时以前就满足,则立即执行后续操作而无须等待超时达到。
示例:
import java.util.concurrent.TimeUnit;
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);