zoukankan      html  css  js  c++  java
  • 显示等待、隐式等待和强制等待的区别

     在使用selenium或者appium时,为了等待下个等待定位的元素出现,需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,常用的等待分为显示等待WebDriverWait()、隐式等待implicitly_wait()、强制等待sleep()三种

    • sleep():强制等待,设置固定休眠时间。后脚本的执行过程中执行 sleep()后线程休眠,而另外两种线程不休眠。
    • implicitly_wait():隐式等待是在尝试发现某个元素的时候,如果没能立刻发现,等待固定长度的时间,设置了时间,作用范围就是webdriver对象实例的整个生命周期
    • WebDriverWait():显示等待明确的要等到某个元素出现或者某个可点击等条件,等不到,一直等,除非在规定时间之内都没有找到,那么就要跳出异常

    # 强制等待

    1 import time
    2 time.sleep(1)

     # 隐式等待

    driver.implicitly_wait(10)

    原理:mplicity_wait()默认参数的单位为妙,本例中设置等待时长为10秒,首先这10秒并非一个固定的等待时间,它并不影响脚本的执行速度。其次,它并不针对页面上的某一元素进行等待。当脚本执行到某个元素定位是,如果元素可以定位,则继续执行,如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到,它的作用范围就是Webdriver对象实例的整个生命周期。

    # 显示等待

    原理:就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception

    1 from selenium.webdriver.support.wait import WebDriverWait
    2 from selenium.webdriver.support import expected_conditions as EC
    3 from selenium.webdriver.common.by import By
    4 s = (By.CSS_SELECTOR,'#i1')
    5 WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located(s))
    6 driver.find_element_by_css_selector('#i1').send_keys(111)

     

  • 相关阅读:
    5285: [Hnoi2018]寻宝游戏
    CF 1117 E. Decypher the String
    4515: [Sdoi2016]游戏
    CF 1051 G. Distinctification
    4820: [Sdoi2017]硬币游戏
    HNOI2019游记
    最近公共祖先(LCT)
    [WC2006]水管局长(LCT)
    P4178 Tree(点分治)
    二维凸包
  • 原文地址:https://www.cnblogs.com/hereisdavid/p/13908225.html
Copyright © 2011-2022 走看看