• Selenium+Java(六)Selenium 强制等待、显式等待、隐实等待


    前言

    在实际测试过程中,由于网速或性能方面的原因,打开相应的网页后或在网页上做了相应的操作,网页上的元素可能不会马上加载出来,这个时候需要在定位元素前等待一下,等元素加载出来后再进行定位,根据实际使用选择需要的等待方式。

    一、强制等待

     强制等待是利用time模块的sleep方法来实现,最简单粗暴的等待方法。但是此方法影响脚本的执行效率,所以不太推荐使用此方法。

    //强制等待1S
    Thread.sleep(1000);

    二、隐式等待

     隐式等待只能作用于元素的等待。

    如果元素在指定的时间内找到,则不会继续等待,否则在指定时间内未找到元素则抛出NoSuchElementException。
    作用域是全局的,跟driver的生命周期一样,一般定义在父类中,只要设置隐式等待后,页面所有的元素都会被绑定这种等待机制,只需设置一次,全局有效(只作用于元素),直到driver实例被关闭。

    //隐式等待等待5秒
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

    三、显式等待

    除了作用于元素等待还可以实现各种场景的等待,例如页面加载等。
    智能的等待方式,元素在指定的时间内找到,则不会继续等待,否则抛出TimeOutException。
    非全局设置,可以针对不同的元素绑定不同的等待机制。

    //显式等待3秒
    WebDriverWait wait = new WebDriverWait(driver, 3);
    //3秒内找不到此元素,TimeOutException报错
    wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.name("wd")))

    扩展

    ExpectedConditions其他用法

    1. titleIs判断当前页面的title是否等于预期。
    2. titleContains判断当前页面的title是否包含预期字符串。
    3. urlToBe判断当前页面的url是否等于预期。
    4. urlContains判断当前页面的url是否包含预期字符串。
    5. presenceOfElementLocated判断元素是否出现,出现就通过。
    6. visibilityOfElementLocated判断某个元素是否可见,可见代表元素非隐藏。
    7. elementToBeSelected页面元素处于被选中状态。


    ExpectedConditions还有很多其他方法,在此不一一列举。

  • 相关阅读:
    Kafka0.10.2.0分布式集群安装
    Windows下本机简易监控系统搭建(Telegraf+Influxdb+Grafana)
    Influxdb1.2.2安装
    Grafana4.2安装
    Zookeeper3.4.9分布式集群安装
    Grafana中多租户设置
    Grafana关键表结构分析
    Spark2.1.0分布式集群安装
    Hadoop2.7.3分布式集群安装
    JVM学习--(七)性能监控工具
  • 原文地址:https://www.cnblogs.com/yogouo/p/11949116.html
Copyright © 2020-2023  润新知