引子
在进行自动化测试时常常需要设置等待页面相应时间;经过查询,发现python中使用等待的方式主要有三种:硬式等待、隐式等待、显示等待
硬等待
顾名思义,就是无条件的等待;time.sleep(2),程序执行到此,等待2S后继续执行
隐式等待
implicitly_wait(10),在范围内设定一个最大的等待时间10s;在此时间段内页面加载完成则继续执行,未加载完成则等到最大时间后报超时错误。
显示等待
为具体的某执行设置等待时间,在此时间内不断查找元素,超时则报出message设定信息,使用WebDriverWait结合until
举例
构造弱网条件
from selenium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Firefox()
driver.implicitly_wait(5)
driver.get("https://www.baidu.com")
time.sleep(1)
print("定位!")
driver.find_element_by_link_text("地图").click()
print("跳转至地图页面!")
WebDriverWait(driver,15,poll_frequency=5).until(lambda d:driver.find_element_by_id("search-button"),message="定位地图页面元素超时")