selenium的显示等待和隐式等待的理解

设置隐式等待

1、一次设置,后边的代码全部生效(全局生效,可修改)

2、在元素定位的时候,如果找不到元素,轮询查询(每0.5秒查询一次),直到元素出现

3、元素出现就不会再等了

4、如果元素超时没有出现,就报错

driver.implicitly_wait(10)

设置显示等待

1、每隔一段时间检测一次当前页面元素是否存在,

2、如果元素出现就不再等了,继续执行后边的代码

3、如果超过设置时间检测不到则抛出异常(TimeoutException)

4、只对设置的元素生效

操作格式:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

  driver:浏览器驱动

  timeout:最长超时时间,默认以秒为单位

  poll_frequency:检测的间隔(步长)时间,默认为0.5S (也就是轮询时间)

  WebDriverWait()一般由until()或 until_not()方法配合使用

  expected_conditions类提供的预期条件判断的方法(这里介绍几种常用的)

  
presence_of_element_located                          判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见
visibility_of_element_located                             判断某个元素是否可见. 可见代表元素非隐藏,并且元素的宽和高都不等于 0
visibility_of                                                         跟上面的方法做一样的事情,只是上面的方法要传入 locator,这个方法直接传定位到的 element 就好了
text_to_be_present_in_element                        判断某个元素中的 text 是否 包含 了预期的字符串
text_to_be_present_in_element_value              判断某个元素中的 value 属性是否包含 了预期的字符串
frame_to_be_available_and_switch_to_it          判断该 frame 是否可以 switch进去,如果可以的话,返回 True 并且 switch 进去,否则返回 False
invisibility_of_element_located                           判断某个元素中是否不存在于dom树或不可见
element_to_be_clickable                                    判断某个元素中是否可见并且是 enable 的,这样的话才叫 clickable






 
 
------------------

应用:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
#元素是否可见
element = WebDriverWait(driver, 5, 0.5).until(EC.visibility_of_element_located((By.ID, "kw")))
element.send_keys('selenium')
 
 
 
原文地址:https://www.cnblogs.com/Lara1798/p/12956648.html