2018-09-21显示等待、隐式等待和强制等待的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-09-21显示等待、隐式等待和强制等待的区别相关的知识,希望对你有一定的参考价值。

参考技术A 在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait()、隐式等待implicitly_wait()、强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别
sleep(): 强制等待,设置固定休眠时间。后脚本的执行过程中执行 sleep()后线程休眠,而另外两种线程不休眠。
implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。
WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException
显示等待、隐式等待和强制等待的区别
  在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait()、隐式等待implicitly_wait()、强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别
sleep(): 强制等待,设置固定休眠时间。后脚本的执行过程中执行 sleep()后线程休眠,而另外两种线程不休眠。
implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。
WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException

1、find / -name a.conf
2、cd 路径
3、echo bbb >> a.conf

6.vi编辑器光标移动到文件行首,所在行行首,删除光标所在行,保存并退出?
移动行首 :删除光标所在处 wq 保存文件并退出
7.编辑该目录下cdts.log文件,将其中所有的partyno字符串替换为custno后保存退出
sed -i 's/<partyno>/custno/g' cdts.log
9.wls/applogs/目录下有脚本clean.sh,现在要添加到计划任务中,每天22:30执行?
sudo vim /etc/crontab 30 22 * * * /wls/applogs/clean.sh lumus nedp

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自动化时,使用那种等待方式需要结合自身产品的应用,选择适合自己的。

以上是关于2018-09-21显示等待、隐式等待和强制等待的区别的主要内容,如果未能解决你的问题,请参考以下文章

转 Python selenium 强制等待显示等待隐式等待

测试, 强制等待 ,driver / 隐式 / 显示等待

selenium中的三种等待方式(显示等待WebDriverWait()隐式等待implicitly()强制等待sleep())---基于python

selenium强制等待,隐式等待,显式等待

七Appium-python-UI自动化之强制等待:sleep,隐式等待:implicitly_wait,显示等待:WebDriverWait()

selenium中的显示等待,隐示等待,强制等待