selenium2等待元素加载

1.硬性等待

Thread.sleep(8000);

所谓的硬性等待就是,执行完相应操作就等待我设置的8s。无论网速快与慢,网速快的话,也许5s就打开网页了,可是程序必须接着等待剩下的3秒。

网速慢的话,也许8s之内没有打开,此时执行下一步操作,会由于找不到元素,而fail case,所以非必要情况下,不要使用此等待方法。

2.智能等待

public void waitForElementToLoad(int timeOut, final By By) {

  try {

    (new WebDriverWait(driver, timeOut)).until(new ExpectedCondition<Boolean>() {
      public Boolean apply(WebDriver driver) {
        WebElement element = driver.findElement(By);
        return element.isDisplayed();
      }
    });
  } catch (TimeoutException e) {

  Assert.fail("超时!! " + timeOut + " 秒之后还没找到元素 [" + By + "]",e);
  }
}

此方法有两个参数,timeOut是等待元素的超时时间,就是说过了这个时间如果元素还没加载出来就报错。By对象,这个是你元素的定位方式比如By.id(“login”);
这个方法会在给定timeOut去查找元素,如果在小于timeOut的时间内找到了元素,剩下的时间不在等待,直接执行接下来的操作。假如在规定的timeout时间内还没有找到元素,则会fail case,同时打印“超时!! * 秒之后还没找到元素 *”

3.设置等待页面加载完毕

由于网络原因或者电脑反应速度原因,想等待网页加载完毕之后再执行点击操作,所以:

int pageLoadTime = 10;
driver.manage().timeouts().pageLoadTimeout(pageLoadTime, TimeUnit.SECONDS);
这段代码,加载driver.get(url)方法之前,他们等待你给定的时间,如果在给定时间内网页还是没有加载出来就会报错,如果在小于给定时间内加载完毕了,剩下的时间不再等待。

原文地址:https://www.cnblogs.com/yajing-zh/p/5076713.html