zoukankan      html  css  js  c++  java
  • selenium&appium中的三种等待方式---基于python

     我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait()隐式等待implicitly_wait()强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别

    在前面的博文中简单介绍了《强制等待和隐士等待的区别和理解》,本文再详细的结合案例进行理解。

    • sleep(): 强制等待,设置固定休眠时间。 python 的 time 包提供了休眠方法 sleep() , 导入 time 包后就可以使用 sleep(),进行脚本的执行过程进行休眠。

    • implicitly_wait():隐石等待,也叫智能等待,是 webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。

    • webdirverwait:显示等待,在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException

    下面通过一个实例来加深理解:

    #coding=utf-8
    from selenium import webdriver
    #导入 WebDriverWait 
    from selenium.webdriver.support.ui import WebDriverWait
    #导入 time 
    from sleep import  sleep
    driver = webdriver.Firefox()
    driver.get("http://www.baidu.com")
    #WebDriverWait()方法使用
    element=WebDriverWait(driver, 10).until(lambda driver : driver.find_element_by_id("kw"))        #
    element.send_keys("selenium")
    #添加智能等待
    driver.implicitly_wait(30) #implicitly_wait()方法比 sleep() 更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待
    driver.find_element_by_id("su").click()
    #添加固定休眠时间
    sleep(5) #sleep()方法以秒为单位,假如休眠时间小时 秒,可以用小数表示。
    driver.quit()

    关于强制等待和隐式等待在上面注释中已做了说明

    下面主要介绍一下WebDriverWait() 显示等待,语法格式如下: 

    WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until(self,method,message=)

    或者

    WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until_not(self,method,message=)

    self, 函数本身,在实际使用的时候不需要输入
    driver, webdriver的驱动程序,如(IE、FireFox、chrome、safari等)
    timeout,超时时间,默认以秒为单位
    poll_frequency,休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
    ignored_exceptions, 超时后的异常信息,默认情况下抛

    driver, webdriver的驱动程序,如(IE、FireFox、chrome、safari等)
    timeout,超时时间,默认以秒为单位
    poll_frequency,休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
    ignored_exceptions, 超时后的异常信息,默认情况下抛
    NoSuchElementException",大家可以定义忽略的异常信息
    WebDriverWait,一般由until或until_not配合使用
    until(method,message="),调用该方法提供的驱动程序做为一个参数,直到返回值不为False

    until_not(method,message="),调用该方法提供的驱动程序做为一个参数,直到返回值为False


    实例:
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.common.exceptions import NoAlertPresentException,TimeoutException,NoSuchElementExceptiondriver=webdriver.Firefox()
    driver.get("http:www.baidu.com")
    WebDriverWait(driver,10,1,NoSuchElementException).until(lambda driver:driver.find_element_by_name("d_status"))

    我的猫在屋顶睡着了


    本文转自:https://www.cnblogs.com/VseYoung/p/selenium_wait_3_python.html

  • 相关阅读:
    convert image to base64 and post to RESTful wcf
    在android webview实现截屏的手动tounchmove裁剪图片
    How to use jquery ajax and android request security RESTful WCF
    using swfUpload in asp.net mvc
    using HttpClient and sending json data to RESTful server in adroind
    ODP.NET数据访问
    android image watermark
    解决国内不能访问github的问题
    idapro权威指南第二版阅读笔记第九章 交叉引用和绘图功能
    idapro权威指南第二版阅读笔记第二章 逆向和反汇编工具
  • 原文地址:https://www.cnblogs.com/finer/p/11895076.html
Copyright © 2011-2022 走看看