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)

     

  • 相关阅读:
    frida
    ES中filter 和map的使用
    阿里巴巴15 款开发者工具
    小程序的开发记录
    微信3.1小程序商城源码C# ASP.NET 多用户微商城 saas模式
    js中for,for in,forEach,for of的使用
    Vuejs学习笔记
    vue.js/element-ui/webpack 开发记录
    ESXi开启虚拟化
    shell把字符串中的字母去掉,只保留数字
  • 原文地址:https://www.cnblogs.com/hereisdavid/p/13908225.html
Copyright © 2011-2022 走看看