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


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

    强制等待:sleep()

    import time
    sleep(5)  #等待5
    • 1
    • 2

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

    缺点:

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


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

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


    隐式等待:implicitly_wait()

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

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

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

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

    缺点:

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

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

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

    显示等待:WebDriverWait()

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

    需要通过

    from selenium.webdriver.support.wait import WebDriverWait
    
    • 1

    导入模块

    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在设置时间(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外面是两层()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

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

    尾语

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

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

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

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

  • 相关阅读:
    python+appium
    每天分享几个面试题(九)
    【算法-动态规划】零钱兑换问题-力扣 322
    程序员自由创业周记#13:第一桶金
    Golang企业面试题
    (附源码)计算机毕业设计SSM基于框架的在线问答平台
    [图解]“敏捷”染色和“额勒金德” 数学
    前端刷题 | 网站
    【LeetCode每日一题】——LCP 07.传递信息
    Transformers in Remote Sensing: A Survey
  • 原文地址:https://blog.csdn.net/m0_72282564/article/details/133825565