元素等待的处理
等待方式1:
线程等待:Thread.sleep(xxxx)(不推荐)
等待方式2:
全局等待:driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS)
@BeforeMethod
public void openWeb() throws InterruptedException {
System.setProperty("webdriver.chrome.driver","D:\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("file:///G:/java+selenium/index.html");
//全局/显示等待,所有的地方起作用,如果10s之内就正常,那就无需等待,否则会等待20s,然后抛超时异常
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
等待方式3:
显示等待:
new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By))
public void waitTest(){
driver.findElement(By.className("wait")).click();
//隐式等待,如果没有满足until后面的值,会等待5s,然后抛超时异常,如果5s之内就正常了,那就无需等待
WebDriverWait webDriverWait = new WebDriverWait(driver,5);
webDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.className("red")));
String text = driver.findElement(By.xpath("//*[@id=\"display\"]/div[1]")).getText();
System.out.println(text);
}