Python3学习笔记_web自动化基础五_三大等待_20200714
元素等待的三种方式:
非智能等待:
强制等待:
time.sleep()
时间不好控制,不知道要等待多久,不够灵活
有多少个元素等待,就需要设置多少次
智能等待:给你一个超时时间,如果在超时时间之内能够找到,就直接返回元素,如果超时,就会报错
隐性等待:
全局设置,全局生效
设置超时时间,超过超时时间,就会报错:NoSuchElementException
设置一次就可以了
所有的查找元素都生效
driver.implicitly_wait(20) #---单位是秒
只能用来等待元素加载,其他的等不了
显性等待【难点和重点】
解决了隐性等待解决不了的问题
等待某个元素可以被点击:需要滑动滑动条才能点击的元素
等待某个元素可见
等待某个窗口被打开
不是全局的,每次等待都需要单独设置
from selenium.webdriver.support.wait import WebDriverWait
显性等待几个重要的条件:
presence_of_element_located(locator)--元素是否出现
visibility_of_element_located(locator)---元素是否可见
element_to_be_clickable(locator)----元素是否可被点击
使用顺序:
如果要点击元素,就用是否可被点击,其他的可以先用是否可见,如果未生效,就使用是否出现
显性等待如果找不到元素?
报错,TimeoutException
为什么要用等待?
因为页面还未加载完成,是无法定位到元素的,所以需要等待页面加载完成之后,才能找到或定位到元素
等待方式的选择:
隐性等待:全局设置,等待查找元素,第一顺位
显性等待:等待元素可以被点击,可见【只有在隐性等待报错的时候,使用】
强制等待:隐性等待和显性等待都用不了的时候,就用强制等待,多个系统交互的地方
三大等待:
如果是练习的时候,优先选择:显性等待
如果做web自动化测试的时候,优先选择:
前提:如果直接用find_element就可以找到元素,则不需要等待【因为他不是动态加载出来的】
有的元素是需要等的,比如有些元素需要过一小会,需要触发某个事件才能加载出现
隐性等待
显性等待
显性等待如果找不到,就切换条件:
presence_of_element_located(locator)--元素是否出现
visibility_of_element_located(locator)---元素是否可见
element_to_be_clickable(locator)----元素是否可被点击
强制等待