selenium显示等待和隐式等待

selenium在等待元素时有三种方式:
1.隐式等待:
driver.implicitly_wait(30)

等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常,此为全局变量,是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间

2.显示等待:
from selenium.webdriver.support.ui import WebDriverWait

#WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None) 

wait = WebDriverWait(context.driver, 30)
is_disappeared = wait.until_not(lambda x:x.find_element(by=how, value=what).is_displayed())
element = wait.until(lambda x:x.find_elements_by_xpath(locatorString))


明确的要等到某个元素的出现或者是某个元素的可点击等条件,每隔poll_frequency=0.5(默认值)查找一下元素,等不到,就一直等,除非在规定的时间timeout之内都没找到,那么就跳出Exception。

3.线程等待:
import time
time.sleep(2)


Notes:若同时设置了隐式等待和显示等待,则以隐式等待为第一优先级,也就是说,若隐式等待时间大于显示等待,则执行显示等待时,显示等待时间设置无效,因为driver若找不到元素,会先等待隐式等待的时间。

猜你喜欢

转载自zhijue0707.iteye.com/blog/2348681