显示等待、隐式等待和强制等待的区别

 在使用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)

 

 

posted @ 2020-10-31 23:04  HEREISDAVID  阅读(259)  评论(0编辑  收藏  举报