Selenium 自动化测试中显式等待和隐式等待的区别

1. 显式等待(Explicit Wait)​​
​定义​:针对特定条件(如元素可点击、可见等)设置明确的等待时间,直到条件满足或超时。

​特点​:

​精准控制​:只对指定的元素和条件生效,其他操作不受影响。
​灵活的条件​:支持多种预定义条件(如 presence_of_element_located、visibility_of_element_located、element_to_be_clickable 等),也可自定义条件。
​超时后抛出异常​:如果条件未在指定时间内满足,会抛出 TimeoutException。
​使用场景​:
需要等待动态加载的元素(如 AJAX 请求后的元素)、特定状态(如按钮可点击)等。

​代码示例​:

python

运行

复制

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 设置显式等待:最多等待10秒,直到元素可点击
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, “submit-button”))
)

​2. 隐式等待(Implicit Wait)​​
​定义​:为整个 WebDriver 实例设置一个全局的等待时间,在查找元素时,如果元素未立即出现,会轮询 DOM 直到超时。

​特点​:

​全局生效​:对所有 find_element 或 find_elements 操作生效。
​简单但粗糙​:无法针对特定条件(如元素可点击)设置等待,只能等待元素存在于 DOM 中。
​超时后抛出异常​:如果元素未在指定时间内找到,会抛出 NoSuchElementException。
​使用场景​:
适用于简单的页面加载,或需要统一设置全局等待时间的情况(但不推荐过度依赖)。

​代码示例​:

# 设置隐式等待:全局等待5秒
driver.implicitly_wait(5)

# 后续所有 find_element 操作都会应用这个等待时间
element = driver.find_element(By.ID, “username”)

 

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » Selenium 自动化测试中显式等待和隐式等待的区别

提供最优质的资源集合

立即查看 了解详情