UI自动化之三种等待

UI自动化中常用三种等待

目录

1、强制等待

2、隐式等待

3、显示等待

1、强制等待

执行到某一条语句后,然后sleep(3),等待3秒后,才会继续执行后面的语句

2、隐式等待

隐式等待只需要声明一次,一般在打开浏览器后进行声明。声明之后对整个drvier的生命周期都有效,后面不用重复声明。 

隐式等待是等待页面加载完,才会继续执行后面的语句;也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步

driver = webdriver.Chrome()
driver.implicitly_wait(10)

  

3、显示等待

不同于隐式等待,显示等待是等待需要加载的元素加载完,就会继续执行后面的语句

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait                            
from selenium.webdriver.support import expected_conditions as EC 
          
driver = webdriver.Firefox()
driver.get("http://XX.com")
try:
    element =WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "Element")))
finally:
    driver.quit()

显示等待需要用到两个类:WebDriverWait和expected_conditions两个类

3.1WebDriverWait

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:浏览器驱动

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

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

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

WebDriverWait()类中有untiluntil_not()和until_not()until_not()方法:

until

method: 在等待期间,每隔一段时间(__init__中的poll_frequency)调用这个传入的方法,直到返回值不是False

message: 如果超时,抛出TimeoutException,将message传入异常

until_not

 与until相反,until是当某元素出现或什么条件成立则继续执行,

 until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。

3.2expected_conditions

此类中各种方法,达到某种条件,返回True和False

title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值

 title_contains : 判断当前页面的title是否包含预期字符串,返回布尔值

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

 visibility_of_element_located : 判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于0

 visibility_of : 跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了

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

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

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

 frame_to_be_available_and_switch_to_it : 判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False

 invisibility_of_element_located : 判断某个元素中是否不存在于dom树或不可见

 element_to_be_clickable : 判断某个元素中是否可见并且是enable的,这样的话才叫clickable

 staleness_of : 等某个元素从dom树中移除,注意,这个方法也是返回True或False

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

 element_selection_state_to_be : 判断某个元素的选中状态是否符合预期

 element_located_selection_state_to_be : 跟上面的方法作用一样,只是上面的方法传入定位到的element,而这个方法传入locator

alert_is_present : 判断页面上是否存在alert

原文地址:https://www.cnblogs.com/weizhideweilai/p/9703481.html