zoukankan      html  css  js  c++  java
  • UI自动化(selenium+python)之元素定位的三种等待方式

    前言

    在UI自动化过程中,常遇到元素未找到,代码报错的情况。这种情况下,需要用等待wait。

    在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverWait

    一、固定等待(sleep)

        导入time模块,设定固定的等待时间

        缺点:在网络状态良好,元素可以加载出来的情况下,依然需要等待,会导致脚本允许时间延长。

          

    二、隐式等待(implicitly_wait)

           隐式等待是指页面元素在设定时间内全部加载完成,才能执行下一步。若超过了设定时间报异常

           缺点:页面的JS一般是放在body的最后加载的,若JS没有加载,页面想要的元素已经出现,这时还要继续等待。 

           也会影响脚本执行速度。

           

    三、显示等待(WebDriverWait)

           通过from selenium.webdriver.support.wait import WebDriverWait 导入方法WebDriverWait()

          

         参数:

         driver:浏览器驱动

         timeout:最长超时时间,单位秒

         poll_frequency:监测频率时长,单位秒

         ignored_exception:忽略的异常信息,若报的是元组内的异常,则不中断代码,继续执行。若报的元组外的异常,则中断代码,停止执行。

         WebDriverWait函数中有until和until not两个方法:

        until和until not都有参数method和message。注意这里的method参数必须含有_call_(),使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用

        method:在等待时间内,每隔一段时间调用下method这个参数,判断返回值是否为True,若为True则执行下一步。

        message:超时后,报TimeoutException写入message。

      

        WebDriverWait与expected_conditions结合使用:

      

         expected_conditions类提供的条件判断方法:

        

        除了上述expected_conditions方法,还可以使用匿名函数lambda

        lambda driver:driver.find_element(<定位元素>)

        例如:WebDriverWait(driver, 5, 1).until(lambda driver:driver.find_element_by_id('kw'))

         

  • 相关阅读:
    Hihocoder 1275 扫地机器人 计算几何
    CodeForces 771C Bear and Tree Jumps 树形DP
    CodeForces 778D Parquet Re-laying 构造
    CodeForces 785E Anton and Permutation 分块
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale 二分
    Hexo Next 接入 google AdSense 广告
    如何统计 Hexo 网站的访问地区和IP
    Design and Implementation of Global Path Planning System for Unmanned Surface Vehicle among Multiple Task Points
    通过ODBC接口访问人大金仓数据库
  • 原文地址:https://www.cnblogs.com/balllyh/p/12193496.html
Copyright © 2011-2022 走看看