在实际使用中,有时会出现一个元素还没有加载出来,导致无法获取,此时需要selenium处理来等待一段时间,此时处理方法有以下几种:
1、最笨、最简单但是最不推荐的方式:
Thread.sleep(times);
2、采用 WebDriverWait类+ExpectedConditions接口,具体用法例子: WebDriverWait wait = new WebDriverWait(driver,10);
WebElement e1 = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='site_nav_md']/ul/li[3]/a[1]/span")));
含义:表示默认等待1-10s, 10内,若ExpectedConditions找到元素立刻返回,超过是10s报超时。
3、隐形等待
WebDriver driver=new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
说明:
执行driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);后
当要查找元素,而这个元素没有马上出现时,会告诉WebDriver查询Dom一定时间(设置了10s)。默认值是0, 设置之后,这个时间将在WebDriver对象实例整个生命周期都起作用