python学习之三种等待时间
1,强制等待:不论页面是否加载完成,都要等待指定时间后才执行下一步,单位s,time.sleep(指定时间)
2,隐形等待:页面加载完成则执行下一步,没有加载完成,则继续等待直到指定时间后在执行下一步,单位s,implicitly_wait(指定的时间)
3,显性等待:每个指定的时间调用一次until中的method方法(这个方法可以使用来判断某个元素是否存在的方法,存在返回true,否则返回false),
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver:webdriver的驱动程序(ie,firefox,chrome,或远程)
timeout:最长超时时间,默认单位s
poll_frequency=0.5:休眠时间的间隔时间,默认为0.5秒
ignored_exceptions=none:超时后的异常信息,默认情况下抛NoSuchElementException 异常
隐式等待是等页面加载,而不是元素加载!!!(隐式等待就是针对页面的,显式等待是针对元素的。)
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#强制等待,不论页面是否加载完成,都是等待20秒后继续执行下一步
print('第一次执行')
time.sleep(2)#等待2s后执行下面的内容
print('等待2s后执行')
#隐形等待,页面加载完成则执行下一步,没有加载完成,则继续等待直到10秒后再执行下一步
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(20)#隐形等待20,页面加载完成则下一步,没有完成等指定时间后下一步
print(driver.title)
driver.close()
# 显性等待,每隔0.3s调用一次until中的method方法(这个方法可以是用于判断某个元素是否存在的方法,存在返回true,否则返回false),
# 最长等待10秒,10秒后继续执行下一步
driver1 = webdriver.Chrome()
driver1.maximize_window()
driver1.get('http://www.baidu.com')
try:
elements = WebDriverWait(driver1,10).until(EC.presence_of_element_located((By.ID,'kw')))
print(driver1.title)
finally:
driver1.quit()
领取专属 10元无门槛券
私享最新 技术干货