zoukankan      html  css  js  c++  java
  • 2.8 (显示、隐式、线程休眠) selenium 等待方式 ❀

    http://blog.csdn.net/pf20050904/article/details/20052485

    http://www.cnblogs.com/hellokitty1/p/6295843.html?utm_source=itdadao&utm_medium=referral

    Thread.sleep()   线程休眠

    当执行到sleep()方法时会固定的休眠所设置的时长(这里以毫秒为单位);然后再继续执行。
    注意,这里的Thread.sleep()方法不能直接使用,必须加上异常的处理。
    throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。  

    ·implicitlyWait。识别对象时的超时时间。过了这个时间如果对象还没找到的话就会抛出NoSuchElement异常。
    ·setScriptTimeout。异步脚本的超时时间。WebDriver可以异步执行脚本,这个是设置异步执行脚本脚本返回结果的超时时间。
    ·pageLoadTimeout。页面加载时的超时时间。因为WebDriver会等页面加载完毕再进行后面的操作,所以如果页面超过设置时间依然没有加载完成,那么WebDriver就会抛出异常

    显式等待

    就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.

    如:

     new WebDriverWait(driver, 15).until(
         ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
    );

     

    这里,15是要等待的秒数.如果没有满足until()方法中的条件,就会始终在这里wait 15秒,依然找不到,就抛出异常.

    隐式等待

    driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);

    隐式等待, 此处的隐式等待是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间,  一些人对此处有误解,认为是让Driver等一段时间,  确实某些时候能让Driver等一段时间, 但是影响是全局的,每次Driver执行 找不到元素都会等待此处设置的时间,  假设某处将此值设置的太长,必须在执行完成之后还原回来,否则判断一个元素是否存在的时候,就会遇到很坑爹的问题。

    WebDriver会进行一个隐式等待,但参数只有时间,这就导致我需要什么元素出现,我不一定能等到它,

      private boolean isElementPresent(By by) {
        try {
          driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
          driver.findElement(by);
          return true;
        } catch (NoSuchElementException e) {
          return false; 
        }
      }
     
    得不到某个元素,我们就延迟一下..
  • 相关阅读:
    Zookeeper java API
    Zookeeper 安装与配置
    Zookeeper 架构
    HBase 优化
    HBase 与 MapReduce 整合
    Hbase protobuf Java API
    HBase数据库设计
    Fork/Join并发处理框架
    并发容器Map
    Redis缓存穿透、缓存击穿和雪崩
  • 原文地址:https://www.cnblogs.com/ericazy/p/6929793.html
Copyright © 2011-2022 走看看