zoukankan      html  css  js  c++  java
  • selenium

    页面加载元素,有时会有延时,造成自动化测试的不稳定。可以通过设置元素的等待延时来解决,一般有3种方法:

    • 显示等待
    • 隐式等待
    • sleep()

    下面分别介绍:

    1. 显示等待

    稍复杂,不常用,so~~

    2. 隐式等待 implicitly_wait()

     通过一定的时长,等待页面上的元素加载完成。driver.implicitly_wait(10)

    特点:

    • 设置的等待时长为10秒,并不是一个固定的等待时间
    • 不会影响脚本的执行速度
    • 不针对页面上的某一特定元素进行等待。

    规则:

    • 当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;
    • 若定位不到,则以轮询的方式不断的判断元素是否被定位到。

    例如:在第8秒定位到元素,则继续执行,若超出设置的时间10s还没有定位到,则抛出异常(本例中对异常进行了处理)

    from selenium import webdriver
    import time    
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    
    driver.implicitly_wait(10)  # 设置等待时长为10s
    
    try:
        print(time.ctime())     # 打印:Mon Mar  9 19:14:41 2020
        driver.find_element_by_id('su1')
    except Exception as e:
        print(e)                # 打印异常信息:Message: no such element
    finally:
        print(time.ctime())     # 打印:Mon Mar  9 19:14:51 2020(和前一个时间,间隔10s)
        driver.quit()

    3. sleep()

     可以设置固定时间的休眠等待

    from selenium import webdriver
    import time      # 导入time模块
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    
    time.sleep(0.5)   # 休眠0.5秒
    driver.find_element_by_id('kw').send_keys('fjdkasljf')
    time.sleep(2)     # 默认以秒为单位,休眠2秒
    
    driver.quit()
  • 相关阅读:
    python学习随笔--string[:]
    年少时读不懂 天龙八部,如今读懂已过少年
    web安全测试随笔
    纪录jmeter loop controller 使用中的一个坑
    移动设备覆盖统计数据源
    jmeter and postman
    web测试----http状态码
    转自莫某的java学习计划
    jquery实现页面加载时删除特定class 的div内前三个字符
    js学习
  • 原文地址:https://www.cnblogs.com/xiaochongc/p/12450385.html
Copyright © 2011-2022 走看看