• selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()


    强制等待:sleep()

    1. import time

    2. sleep(5) #等待5秒

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

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

    隐式等待:implicitly_wait()

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

    由webdriver提供的方法,一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用,它不针对某一个元素,是全局元素等待,即在定位元素时,需要等待页面全部元素加载完成,才会执行下一个语句。如果超出了设置时间的则抛出异常。

    缺点:当页面某些js无法加载,但是想找的元素已经出来了,它还是会继续等待,直到页面加载完成(浏览器标签左上角圈圈不再转),才会执行下一句。某些情况下会影响脚本执行速度。

    显示等待:WebDriverWait()

    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()方法结合使用

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

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

    WebDriverWait与expected_conditions结合使用

    1. from selenium.webdriver.support import expected_conditions as EC
    2. from selenium.webdriver.common.by import By
    3. wait = WebDriverWait(driver,10,0.5)
    4. element =waite.until(EC.presence_of_element_located((By.ID,"kw"),message="")
    5. # 此处注意,如果省略message=“”,则By.ID外面是两层()

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

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

    1. #设置等待
    2. wait = WebDriverWait(driver,10,0.5)
    3. #使用匿名函数
    4. wait.until(lambda diver:driver.find_element_by_id('kw'))

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    在这里插入图片描述

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

  • 相关阅读:
    linux下通过wifi连接网络
    js模块化
    面试:Android 签名校验机制 v1、v2、v3
    【Go语言学习笔记】类型
    《视觉SLAM十四讲》-- 后端 1(上)
    javaee ssm框架项目整合thymeleaf 项目结构图
    Splunk serverclass 没有生效
    Python中的缓存库
    docker(二)容器的启动,停止,删除
    docker形式简易部署kibana
  • 原文地址:https://blog.csdn.net/2301_78843735/article/details/133811588