在进行UI自动化测试的时,我们为了保持用例的稳定性,往往要设置显示等待,显示等待就是说明确的要等到某个元素的出现或者元素的某些条件出现,比如可点击、可见等条件,如果在规定的时间之内都没有找到,那么就会抛出异常。所以我们在此期间就需要设置等待时间,使测试用例可以继续正常运行下去。

一、硬性等待 time,程序暂停,什么时候要用就什么时候设置

例如
time.sleep(时长)

二、隐性等待,只能用来等待元素出现,且在启动浏览器时,全局只需要设置一次即可

例如:
# 传参:最长需要等待多长时间(s) driver.implicitly_wait(30)

三、显性等待,每需要用到一次,就需要启动一次。不仅可以等待元素,且可以进行其他等待。

# 导入等待条件选项包expected_conditions
from selenium.webdriver.support import expected_conditions
# 导入显性等待对象
from selenium.webdriver.support.wait import WebDriverWait


# 初始化WebdriverWait,参数:webdriver对象 | timeout时间(s) | 每隔多长时间查询一次(可不传)(s)
wait = WebDriverWait(driver, 10, poll_frequency=0.2)
# 参数:等待条件
wait.until(expected_conditions.title_is('百度一下,你就知道'))
1、显性等待条件之title内容 title_is
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait


wait = WebDriverWait(driver, 10, poll_frequency=0.2)
wait.until(expected_conditions.title_is('百度一下,你就知道'))
2、显性等待条件之等待元素加载 presence_of_element_located
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait


wait = WebDriverWait(driver, 10, poll_frequency=0.2)
# 参数:可为list、元组
located = ['id', 'login']
# 返回一个对象
elem = wait.until(expected_conditions.presence_of_element_located(located))
3、显性等待条件之等待元素可见 visibility_of_element_located
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait


wait = WebDriverWait(driver, 10, poll_frequency=0.2)
# 参数:可为list、元组
located = ['id', 'login']
# 返回一个对象
elem = wait.until(expected_conditions.visibility_of_element_located(located))
4、显性等待条件之等待元素可以被点击 element_to_be_clickable
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait


wait = WebDriverWait(driver, 10, poll_frequency=0.2)
# 参数:可为list、元组
located = ['id', 'login']
# 返回一个对象
elem = wait.until(expected_conditions.element_to_be_clickable(located))