UI自动化(六)三种等待方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UI自动化(六)三种等待方式相关的知识,希望对你有一定的参考价值。

参考技术A 因为调用的time类的sleep方法,所以等待的方式与页面元素无关,执行到此就必然给出规定时间的等待。

在规定时间内等待页面元素全部加载完毕。若在规定时间提前加载完成则会立即往下执行,若在规定时间延迟加载完成,则到达时间也会立刻执行。

借用网友的一个非常形象的比喻来进行说明:闪电侠(driver)和凹凸曼(页面元素)约定好,不论闪电侠去哪儿,都要等凹凸曼XX秒,如果凹凸曼在这段时间内来了,则俩人立即出发去打怪兽,如果凹凸曼在规定时间内没到,则闪电侠自己去,那自然就等着凹凸曼给你抛异常吧。

注意:driver.implicitly_wait(XX)方法在全局仅需设置一次即可,之后只要driver打开的页面,均会生效。

讲解:WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

需要通过from selenium.webdriver.support.wait import WebDriverWait导入模块

- driver:浏览器驱动

- timeout:最长超时时间,默认以秒为单位

- poll_frequency:检测的间隔步长,默认为0.5s

- ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。

※ 一般与until()或者until_not()方法结合使用。

WebDriverWait(driver,10).until(method,message="")    调用该方法提供的驱动程序作为参数,直到返回值为True

WebDriverWait(driver,10).until_not(method,message="")    调用该方法提供的驱动程序作为参数,直到返回值为False

WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,"kw")),message="")   如果省略message=“”,则By.ID外面是三层(),参数是元组  (By.ID,"kw") 

expected_conditions类提供的预期条件判断的方法

presence_of_element_located 判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见

visibility_of_element_located 判断元素是否可见(可见代表元素非隐藏,并且元素宽和高都不等于 0)

presence_of_all_elements_located 判断是否至少有 1 个元素存在于 dom 树中。举例:如果页面上有 n 个元素的 class 都是’wp’,那么只要有 1 个元素存在,这个方法就返回 True

text_to_be_present_in_element 判断某个元素中的 text 是否 包含 了预期的字符串

text_to_be_present_in_element_value 判断某个元素中的 value 属性是否包含 了预期的字符串

element_to_be_clickable 判断某个元素中是否可见并且可点击

element_to_be_selected 判断某个元素是否被选中了,一般用在下拉列表

以上是关于UI自动化(六)三种等待方式的主要内容,如果未能解决你的问题,请参考以下文章

UI自动化测试中,Selenium的三种等待方式详解

UI自动化测试中,Selenium的三种等待方式详解

Selenium-三种等待方式

Selenium三种等待的使用方式

Selenium中三种等待的使用方式

selenium----三种等待