• 【RobotFramework】显式等待、隐式等待、强制等待


    我们在做UI自动化时,经常会遇到元素不可用或不可见的情况,除定位错误外,大部分原因是元素还未加载出来。

    那么如何解决此类问题呢?

    这里就用到了等待,今天主要基于RF的应用介绍常用的几种等待方式。

    一、强制等待

    即达到等待时间后再执行操作,最为常用、最简单的等待方式。

    缺点是:假设等待设置为5s,不管1s还是2s内元素加载出来,也要等到5s后才会执行下一步操作。

    在RF中的关键词是:Sleep

    二、隐式等待

    全局等待变量的设置,等待时间内会一直刷新页面,直到元素加载出来为止,所以会增加无效的等待时间。

    如果超出等待时间,则会抛出异常。

    在RF中对应的关键词为:

    Get Selenium Implicit Wait【获取默认等待时间】

    Set Selenium Implicit Wait【设置隐式等待时间】

    Set Browser Implicit Wait【设置隐式等待时间,仅影响当前浏览器】

    三、显式等待

    局部等待变量设置,针对某个元素设置等待。

    等待时间内会定时检测某个元素是否存在或可用,然后再执行下一步操作。

    由于针对单个元素,一些加载比较快的元素无需设置,可以针对加载慢的元素进行设置,相对来说可以减少等待时间,便于脚本高效执行。

    超出等待时间,则抛异常。

    在RF中的关键词是:

    Wait Until Element Contains【等待元素匹配

    Wait Until Element Is Enabled 【等待元素可用】

    Wait Until Element Is Visible 【等待元素可见】

    Wait Until Page Contains 【等待页面内容匹配】

    Wait Until Page Contains Element 【等待页面元素匹配】

    上述关键字后边加定位元素或文本等,当条件为True时,执行下一步操作。

    四、其它关于等待的设置

    关键字:Get Selenium Speed 与 Set Selenium Speed

    从Speed看的出,此关键字用于设置执行速度的,一般用于调试使用,真正执行时一般不会用到哦。

    关键字:Get Selenium Timeout 与 Set Selenium Timeout

    全局超时等待时间,默认为5s,可根据需要进行设置,真正执行时一般不会用到哦。

        ${Implicit_time}    Get Selenium Implicit Wait
        log    ${Implicit_time}
        ${speed}    Get Selenium Speed
        log    ${speed}
        ${timeout}    Get Selenium Timeout
        log    ${timeout}

    INFO : ${Implicit_time} = 0 seconds
    INFO : 0 seconds
    INFO : ${speed} = 0 seconds
    INFO : 0 seconds
    INFO : ${timeout} = 5 seconds
    INFO : 5 seconds

    可以看出SeleniumLibrary默认值:timeout=5,implicit_wait=0,selenium speed=0

    设置全局的话可以再Suite中设置,与其它suite一起执行的话全局通用


    在真正构建UI自动化时,使用那种等待方式需要结合自身产品的应用,选择适合自己的。

  • 相关阅读:
    061.Python前端Django组件用户认证组件
    060.Python组件-中间件
    059.Python前端Django组件cooki和session
    058.Python前端Django与Ajax
    057.Python前端Django模型ORM多表查询
    数字签名与数字证书的原理
    加密算法的分类与区别
    Linux操作php.ini文件
    Linux添加普通权限账号并授予root权限
    Linux 切换 shell
  • 原文地址:https://www.cnblogs.com/panda-sweets/p/13738560.html
Copyright © 2020-2023  润新知