WebDriver在操作页面元素等待时间,提供两种等待方式:一个为显示等待,另一个为隐式等待
区别:1)显示等待:明确告诉webDriver按照特定的条件进行等待,条件未达到,,就一直等待。这在等待某个元素需要非常长的时间时非常有效
2) 隐式等待:告诉webDriver一个最大的超时时间,如果等待条件在超时以前就满足,就立刻执行后续操作而无须等待超时达到
package test; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import common.StartFireFox; public class TestWait { public static void main(String[] args) { WebDriver driver = StartFireFox.start(); driver.get("http://www.baidu.com"); WebElement login = driver.findElement(By.id("su")); WebElement kw = driver.findElement(By.id("kw")); kw.sendKeys("selenium"); login.click(); //Explicit wait (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>(){ public Boolean apply(WebDriver d){ return d.getTitle().toLowerCase().startsWith("selenium"); } }); System.out.println("Page title is: "+driver.getTitle()); driver.navigate().back(); //Implicit wait driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.findElement(By.id("kw")).click(); driver.quit(); System.out.println("close firefox browser"); } }