隐式等待----implicitly_wait()
隐式等待:隐性等待设置了一个时间,在一段时间内网页是否加载完成,如果完成了,就进行下一步;在设置的时间内没有加载完成,则会报超时加载
注:隐性等待的设置时全局性的,在开头设置过之后,整个的程序运行过程中都会有效,都会等待页面加载完成;不需要每次设置一遍。
在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内不断刷新页面去寻找我们需要的元素
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
driver.implicity_wait(10)# 等待十秒加载不出来就会抛出异常,10秒内加载出来正常返回
driver.get('http://www.baidu.com')
默认参数的单位为秒。同时,这并非一个固定的等待时间,并不影响脚本的执行速度。
显示等待----WebDriverWait类
显示等待是表明某个条件成立才执行获取元素的才做、也可以等待的时候指定一个最大的时间,如果超过这个时间那么就会抛出一个异常(exceptions.TimeoutException)。
即设置一个等待条件,和一个最长等待时间,在等待时间内条件是否满足,满足继续下一步,不满足会继续等待,超过时间就会抛出异常
WebDriverWait一般有until和until_not方法配合使用
until(method,message)
until_not(method ,message)
语法:
WebDriverWait(driver,等待时长,轮循周期).until()/until_not()
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
driver = webdriver.Chrome()
driver .get('https://www.baidu.com/')
wait = WebDriverWait(driver , 10)
logo= wait.until(EC.presence_of_element_located((By.ID, 'su')))
print(logo)
与隐式等待相比,显示等待多了一个指定元素条件超时时间
强制等待----time.sleep()方法
固定等待
import time
time.sleep(5)#强制等待5秒
(非作者允许,严禁转载)