当前位置:   article > 正文

selenium时间等待的三种方式_selenium等待时间

selenium等待时间

selenium脚本中增加时间等待有助于提高脚本的稳定性、健壮性。selenium为我们提供了三种设置时间等待的方式。

一、强制等待

Thread.sleep():固定休眠时间设置,Java的Thread类里提供了休眠方法sleep,导入包后就能使用;

sleep()方法以毫秒为单位 ,简单粗暴但不够智能

  1. Thread.sleep(3000);
  2. // 执行到这里时,固定等待三秒之后,再接着执行后面的操作

二、隐式等待

使用 implicitlyWait 方法设定查找页面元素的最大等待时间,调用 findElement 方法时没有立刻找到定位元素,则程序会每间隔一定时间后不断尝试判断页面的DOM中是否出现被查找元素,若超过设定的等待时长依然没有找到,则抛出 NoSuchElementException;

  • 一旦设置,隐式等待会在WebDriver对象实例的整个生命周期生效,无需重复设置. 
  1. driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
  2. //针对所有findElement方法,最长等待10s
  3. //第一个参数将接受时间作为整数值,第二个参数将接受时间测量
  4. //包括SECONDS,MINUTES,MILISECOND,MICROSECONDS,NANOSECONDS,DAYS,HOURS等

 

三、显式等待

显示等待更节约脚本的执行时间,效率最高.

显示等待分为两类:

  • 系统提供:ExpectedConditions 类中提供了一些常见的显示等待的方法
  1. WebDriver driver = new ChromeDriver();
  2. driver.get("https://www.baidu.com");
  3. WebElement element = (new WebDriverWait(driver,5))
  4. .until(ExpectedConditions.presenceOfElementLocated(By.id("kw")));
  5. /**
  6. * 上面第三条语句表示,在0-5s中去定位id为“kw”的元素,
  7. * WebDriverWait默认每500ms就调用一次ExpectedCondition
  8. * 直到定位成功或者时间截止,ExpectedCondition的返回值要么
  9. * 为true要么为不为空的对象,在规定时间内若没有定位成功元素,
  10. * 则until()会抛出org.openqa.selenium.TimeoutException
  11. */

 

  • 自定义:用户自定义的去编写适合自己的显示等待.
  1. Boolean boo = (new WebDriverWait(driver, 5)).until(new ExpectedCondition<Boolean>() {
  2. @Override
  3. public Boolean apply(WebDriver arg0) {
  4. return driver.findElement(By.id("kw")).isDisplayed();
  5. }
  6. });
  7. Assert.assertTrue(boo);
  8. /**
  9. * 自定义的显示等待,判断id = kw 的元素在5s是否可见;
  10. * 如果可见,则返回true;
  11. * 如果5s后仍不可见,则返回false
  12. */

 

 

推荐使用显示等待的方式以提高脚本的执行效率.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/910096
推荐阅读
相关标签
  

闽ICP备14008679号