- 前言
- 一、显示等待
- 二、显示等待
- 三、强制等待
前言
在实际测试过程中,在操作某个元素之前都会有一个等待过程,而且selenium等待元素常见的方式有三种。强制等待、显示等待、隐示等待,本文主要就针对这三种等待模式以个人理解来讲述下自己在脚本编写过程中使用心得
一、显示等待
显示等待是针对特定的元素设置等待事件,在设置的时间内,默认每隔一段时间(默认0.5s)检测一次当前页面元素,在规定的时间内找到元素,则执行下一步,超时没有找到则抛异常(NoSuchElementExcepetion)
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait import time driver = webdriver.chrome() ==获取chrome浏览器驱动对象
方法及对应参数解释: WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None) driver:浏览器驱动 timeout:超时时间 poll_frequency:扫描间隔时间 ignore_excepetion:超时异常信息,默认抛出NoSuchElementExcepetion 场景使用: 1.显示等待使用一般通过expected_conditions模块结合until()与not_until()两种等待方法使用 #判断元素是否存在页面 presence_of_element_located(*locate):入参为一个元祖,需要传入元素类型和对应元素信息,底层自动调用 WebDriverWait(driver=driver,timeout=1).until(EC.presence_of_element_located((By.ID,"111")),message="test") #判断元素不存在页面 WebDriverWait(driver=driver,timeout=1).until_not(EC.presence_of_element_located((By.ID,"111")),message="test") #判断是否存在alert WebDriverWait(driver=driver,timeout=1).until(EC.alert_is_present((By.ID,"alert")),message='None') #判断标题是否等于预期值 WebDriverWait(driver=driver,timeout=1).until(EC.title_is(r"百度一下,你就知道"),message='None') #判断标题是否包含预期值 WebDriverWait(driver=driver,timeout=1).until(EC.title_contains(r"百度一下,你就知道"),message='None') #判断元素是否可见 WebDriverWait(driver=driver,timeout=1).until(EC.presence_of_all_elements_located((By.ID,"kw")),message='None') #判断元素是否可点击 WebDriverWait(driver=driver,timeout=1).until(EC.element_to_be_clickable((By.ID,"kw")),message='None')二、显示等待
显示等待作用于整个driver,超过时间未加载完成就抛异常,由于作用域的问题是会在每个页面加载时都会等待且会直到页面整个加载完成后才会执行下一步,在一定程度上会影响整个脚本的效率,一般在获取url后使用
driver.implicitly_wait(5) ==单位s三、强制等待
调用time库中的sleep,让脚本强制停止到达设置时间后执行后面的脚本,极大影响脚本效率,故不到万不得已不推荐使用
time.sleep(5) ==单位s



