自动化测试三大等待时间(强制等待,显示等待,隐式等待)
三大等待时间分别是强制等待(Sleep)、隐式等待(Implicit Wait) 和显式等待(Explicit Wait)
1.强制等待(sleep)
代码示例:
# python
import time
time.sleep(1) # 强制等待3秒
适用场景:
- 临时调试时使用,明确知道操作需要固定时间(如页面跳转有固定延迟)。
- 不推荐在正式脚本中大量使用,会导致脚本执行效率低下,且难以适配不同环境的速度差异。
2.隐式等待(implicit)
代码示例:
# python
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 设置全局隐式等待10秒(对所有元素查找生效)
适用场景:
- 适用于整个周期内元素的查找,设置一次全局生效
- 适合页面加载节奏相对稳定的场景,简化脚本(无需为每个元素都设置等待)
- 缺点:等待的条件是“元素存在”,并非“元素可交互”,如果元素不可交互则可能报错
3.显示等待(explicit)
代码示例:
# python
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import excepted_conditions as EC
from selenium.webdriver.common.By import by
driver = webdriver.Chrome()
element = WebDriverWait(driver, 10).util(
EC.elemnet_to_be_clickable((By.ID, 'submit_btn')) # 显示等待十秒,直到元素可点击
)
适用场景:
- 针对特定元素特定状态(如可点击,可见,文本出现等)设置等待,精确度高
- 适合动态加载的元素(如AJAX请求后出现的弹窗)或者需要等待特定条件满足的场景(如进度条加载完成)
- 实际项目主要推荐方式,兼顾稳定性和效率性
总结
- 强制等待:简单粗暴,适合临时调试,不适合正式脚本,效率低下
- 隐式等待:全局生效,简化脚本,适合元素加载稳定的场景
- 显示等待:精准控制,适配动态场景,企业实战自动化的首选