zoukankan      html  css  js  c++  java
  • 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还有很多其他方法,在此不一一列举。

  • 相关阅读:
    C# WinForm开发系列 文章索引
    C#程序集版本控制文件属性祥解(转)
    大型网站调试工具之一(php性能优化分析工具XDebug)
    Web Control 开发系列(二) 深入解析Page的PostBack过程和IPostBackDataHandler
    ASP.NET服务器控件开发(3)事件和回传数据的处理
    理解Session State模式+ASP.NET SESSION丢失FAQ [翻译]
    什么是publickeytoken及publickeytoken的作用
    C#取得页面URL信息
    ASP.NET服务器控件开发(2)继承WebControl类
    [网络收集]ASP.NET 网站路径
  • 原文地址:https://www.cnblogs.com/yogouo/p/11949116.html
Copyright © 2011-2022 走看看