zoukankan      html  css  js  c++  java
  • Selenium-三种等待方式

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错。这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待,每一种等待都有自己的优点或缺点,如果选择最优的等待方式呢。来看下这三种等待方式吧。

    time(固定等待)

    在开发自动化框架过程中,最忌讳使用Python自带模块的time的sleep方法进行等待,虽然可以自定义等待时间,但当网络条件良好时,依旧按照预设定的时间继续等待,导致整个项目的自动化时间无限延长。不建议使用。(注:脚本调试过程时,还是可以使用的,方便快捷)

    import time
    time.sleep(2)#程序阻断2s

    implicitly_wait(隐式等待)

    隐式等待实际是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步。这样的隐式等待会有个坑。我们都知道js一般都是放在我们的body的最后进行加载,实际这是页面上的元素都已经加载完毕,我们却还在等带全部页面加载结束。隐式等待对整个driver周期都起作用,在最开始设置一次就可以了。不要当做固定等待使用,到那都来一下隐式等待。

    driver.implicitly_wait(2)#每启动一个driver后,页面等待2s

    WebDriverWait(显式等待)

    WebDriverWait是selenium提供的显式等待模块引入路径

    from selenium.webdriver.support.wait import WebDriverWait

    WebDriverWait参数

    driver: 传入WebDriver实例,即我们上例中的driver
    timeout: 超时时间,等待的最长时间
    poll_frequency: 调用until或until_not中的方法的间隔时间,默认是0.5秒
    ignored_exceptions: 忽略的异常,如果在调用until或until_not的过程中抛出这个元组中的异常,
    则不中断代码,继续等待,如果抛出的是这个元组外的异常,则中断代码,抛出异常。默认只有NoSuchElementException。

    这个模块中,一共只有两种方法until与until_not

  • 相关阅读:
    对小课堂cpp的用户体验
    面试题 02.07. 链表相交 做题小结
    Leetcode 133. 克隆图 做题小结
    Leetcode 889. 根据前序和后序遍历构造二叉树-105. 从前序与中序遍历序列构造二叉树-106. 从中序与后序遍历序列构造二叉树
    图 的矩阵表示 和邻接表表示
    二叉树 常用函数 小结
    LeetCode 100. 相同的树 做题小结
    LeetCode 897. 递增顺序查找树 做题小结
    Leetcode 814. 二叉树剪枝 做题小结
    Leetcode l872. 叶子相似的树 做题小结
  • 原文地址:https://www.cnblogs.com/bugoobird/p/13228918.html
Copyright © 2011-2022 走看看