selenium中延时等待三种方式

selenium中的延时等待方式有三种:强制等待:sleep()  隐示等待:implicitly_wait()  显示等待 WebDriverWait()

1.强制等待:sleep(),time模块下的方法;只能够针对当前单步操作;缺点:无法很好的控制脚本的执行速度、并且只针对局部一步操作而言、如果每步需要添加则出现过多重复代码,且休眠时间如果超过5秒会出现浏览器回话链接断开;

from time import sleep

sleep(2)    #传入等待时间

2.隐示等待:implicitly_wait():隐式等待;webdriver驱动器对象下的方法;针对是一次会话所有操作,相当于是一个全局等待;只需要声明定义一次,通常在设计脚本中会应用于setUp方法;

from selenium import webdriver      #导包

driver = webdriver.Chrome()         #获取浏览器驱动对象

driver.implicitly_wait(20)          #隐示等待,传入等待时间

3.显示等待,WebDriverWait(驱动器对象,等待时间)

# 两种导入WebDriverWait方式
from selenium.webdriver.support.wait import WebDriverWait       # 导包
from selenium.webdriver.support.ui import WebDriverWait         # 导包
使用webdriverwait只能够与until和not until两个方法进行使用;until和not until中传入的参数可以是lambda匿名函数或者预置条件expected_conditions
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# WebDriverWait 需要传入的是驱动器对象,总体等待时间和刷新时间间隔时间间隔默认0.5
# Presence_of_element_located   表示元素是否存在  必须以元组的形式传入,所以使用到By方法进行定位
WebDriverWait(driver,30,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
如果unitl或者not unitl传入的方法定位元素查找到则会返回对应的对象,如果未找到则会抛出TimeoutException异常
EC预置条件模块具有很多类型的判断:
presence_of_element_located                  判断当前元素是否存在
Presence_of_all_elements_located             判断一组元素是否存在
Text_to_be_present_in_element_value       判断元素值是否有xx文本信息
Presence_of_all_elements_located             判断一组元素是否存在
 

猜你喜欢

转载自www.cnblogs.com/XhyTechnologyShare/p/11820338.html