zoukankan      html  css  js  c++  java
  • 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             判断一组元素是否存在
     
  • 相关阅读:
    关于Jonathan S. Weissman与RIT(罗切斯特理工学院,位于纽约)
    jQuery获取元素值以及设置元素值总结
    页面跳转
    Node JS复制文件
    js获取当前日期并格式yyy-MM-dd
    Json文件删除元素
    HTML页面间传值
    计算机实用但冷门快捷键
    NodejS---require的机制
    Node某个JS导出方法变量以及在其他地方引用的例子
  • 原文地址:https://www.cnblogs.com/XhyTechnologyShare/p/11820338.html
Copyright © 2011-2022 走看看