元素的多种延时等待

有时候页面元素不是当下就出现的,这个时候就需要等待元素出现后再继续后面的操作了。

/**

* 1. 线程休眠---Thread.sleep(long millis);

* 强制等待,硬性等待--不确定具体需要等待多久时间的时候,容易造成时间的浪费

* 例子:Thread.sleep(2000);

* 2. 隐式等待---TimeOuts--implicitlyWait

* 设置方式:driver.manage.timeouts().implictlyWait(long time,TimeUnit unit)

* 例子:driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

* 特点:相对灵活(优),设置是针对全局的,在WebDriver实例整个生命周期有效,但并不是所有元素都需要等待(缺)

* 3. 显式等待--可以自己指定某个元素需要等待(在有必要进行等待的时候再执行等待)

* 每隔0.5秒扫描一次页面,检查元素是否满足等待结果条件,比如查找元素,则检查元素是否存在,存在的话返回true,不存在则继续等待,知道找到或超时。

* 特点:不是针对全局的,只有需要进行等待的元素才执行等待,可以自己设置场景(条件),条件满足时再继续执行

*/

显式等待的代码如下:

/**

* 智能查找元素方法,设置任意等待时间

* @param by

* @param timeOutInSeconds

* @return

*/

public WebElement getElement(By by,long timeOutInSeconds) {

  WebDriverWait wait=new WebDriverWait(driver, timeOutInSeconds);

  WebElement element=wait.until(new ExpectedCondition<WebElement>() {

    public WebElement apply(WebDriver driver) {

      return driver.findElement(by);

    }

   });

  return element;

  }

/**

* 智能查找元素方法,设定等待时间为5s

* @param by

* @return

*/

public WebElement getElement(By by) {

  return getElement(by,5);

}

猜你喜欢

转载自www.cnblogs.com/doris0122/p/9976354.html