python教程:selenium WebDriver 中的几种等待

嗨喽,大家好呀~这里是爱看美女的茜茜呐

python教程:selenium WebDriver 中的几种等待_第1张图片

强制等待:sleep()

import time
sleep(5)  #等待5

设置固定休眠时间,单位为秒。 由python的time包提供, 导入 time 包后就可以使用。

缺点:

不智能,使用太多的sleep会影响脚本运行速度。


更多精彩机密、教程,尽在下方,赶紧点击了解吧~

python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可


隐式等待:implicitly_wait()

driver.implicitly_wait(10) #隐式等待10

由webdriver提供的方法,一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用,

它不针对某一个元素,是全局元素等待,即在定位元素时,需要等待页面全部元素加载完成,才会执行下一个语句。

如果超出了设置时间的则抛出异常。

缺点:

当页面某些js无法加载,但是想找的元素已经出来了,它还是会继续等待,

直到页面加载完成(浏览器标签左上角圈圈不再转),才会执行下一句。

某些情况下会影响脚本执行速度。

显示等待:WebDriverWait()

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

需要通过

from selenium.webdriver.support.wait import WebDriverWait

导入模块

  • driver:浏览器驱动

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

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

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

与until()或者until_not()方法结合使用
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
WebDriverWait(driver,10).until(method,message="")
#调用该方法提供的驱动程序作为参数,直到返回值为True

WebDriverWait(driver,10).until_not(method,message="")
#调用该方法提供的驱动程序作为参数,直到返回值为False

在设置时间(10s)内,等待后面的条件发生。如果超过设置时间未发生,则抛出异常。在等待期间,每隔一定时间(默认0.5秒),调用until或until_not里的方法,直到它返回True或False.

WebDriverWait与expected_conditions结合使用
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver,10,0.5)
element =waite.until(EC.presence_of_element_located((By.ID,"kw"),message="")
# 此处注意,如果省略message=“”,则By.ID外面是两层()

expected_conditions类提供的预期条件判断的方法

python教程:selenium WebDriver 中的几种等待_第2张图片

显示等待,自定义等待条件

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#设置等待
wait = WebDriverWait(driver,10,0.5)
#使用匿名函数
wait.until(lambda diver:driver.find_element_by_id('kw'))

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦

希望本篇文章有对你带来帮助 ,有学习到一点知识~

躲起来的星星也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀

你可能感兴趣的:(python,python,selenium,开发语言,pycharm)