news 2026/7/10 16:16:09

Selenium三种等待方式的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Selenium三种等待方式的使用

Selenium 提供了三种等待方式来确保在继续执行代码之前,页面元素已经加载并可用。这三种等待方式分别是:

显式等待(Explicit Waits)

隐式等待(Implicit Waits)

时间等待(Sleep)

下面是每种等待方式的代码示例:

  1. 显式等待(Explicit Waits)

显式等待是指代码会等待某个特定条件发生后再继续执行,最常用的是等待某个元素出现。显式等待需要配合 WebDriverWait 和 expected_conditions 一起使用。

  1. from selenium import webdriver

  2. from selenium.webdriver.common.by import By

  3. from selenium.webdriver.support.ui import WebDriverWait

  4. from selenium.webdriver.support import expected_conditions as EC

  5. driver = webdriver.Chrome()

  6. driver.get("http://example.com")

  7. try:

  8. element = WebDriverWait(driver, 10).until(

  9. EC.visibility_of_element_located((By.ID, "myElement"))

  10. finally:

  11. driver.quit()

在这个例子中,WebDriverWait 会等待最多 10 秒,直到 id 为 "myElement" 的元素可见。如果在这个时间内元素变得可见,那么它将继续执行。如果超时(在这个例子中是 10 秒),那么会抛出一个 TimeoutException。

  1. 隐式等待(Implicit Waits)

隐式等待是告诉 WebDriver 在查找元素时,如果元素没有立即出现,那么等待一段时间再查找。隐式等待在整个 WebDriver 实例生命周期中只设置一次。

  1. from selenium import webdriver

  2. driver = webdriver.Chrome()

  3. driver.implicitly_wait(10) # 设置隐式等待为 10 秒

  4. driver.get("http://example.com")

  5. # 接下来查找元素的操作,都会等待最多 10 秒

  6. element = driver.find_element_by_id("myElement")

  7. driver.quit()

在这个例子中,设置隐式等待为 10 秒。这意味着每次使用 WebDriver 的查找元素方法(如 find_element_by_id,find_elements_by_class_name 等)时,如果元素没有立即出现,WebDriver 会等待最多 10 秒。

  1. 时间等待(Sleep)

时间等待是最简单的等待方式,它只是让程序暂停执行一段时间。这种方式并不推荐用于 Web 测试,因为它不检查页面元素的状态,只是简单地让程序等待。

  1. import time

  2. from selenium import webdriver

  3. driver = webdriver.Chrome()

  4. driver.get("http://example.com")

  5. time.sleep(10) # 程序暂停 10 秒

  6. element = driver.find_element_by_id("myElement")

  7. driver.quit()

在这个例子中,程序会暂停 10 秒,然后再继续执行。这种方式的问题在于,如果页面加载速度快于 10 秒,那么程序就会浪费时间等待;如果页面加载速度慢于 10 秒,那么程序可能会因为找不到元素而抛出异常。因此,通常建议使用显式等待或隐式等待来替代时间等待。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 21:06:51

应用层|低空应用安全的 “精工锻造者”,中科数测以多工具矩阵赋能应用从开发到运维的全周期安全

从无人系统管理平台的精准调度,到空中交通管制系统的高效指挥,再到低空飞行监控系统的实时预警,应用层是低空经济价值交付的“终端窗口”,其安全直接决定了用户体验的优劣与业务价值的最终实现。中科数测整合固件检测工具、协议模…

作者头像 李华
网站建设 2026/7/8 23:02:01

横观水力压裂模型:从 PDE 建模到 Comsol 模拟

横观水力压裂模型 pde建模 横观各向同性介质水力压裂裂纹扩展模型 使用comsol软件实现相场法模拟裂纹扩展 均基于断裂力学理论 模拟单边拉裂纹受拉伸荷载作用和受剪切荷载作用 考虑初始地应力场作用下裂纹扩展模拟 瞬态水力压裂裂隙扩展 包括文章和模型在地质工程领域&#xff…

作者头像 李华
网站建设 2026/7/10 5:01:45

值得关注的人形机器人公司盘点,智元AGIBOT以卓越实力登顶

随着AI大模型与柔性驱动技术的深度融合,人形机器人正逐渐走向规模商业化,在服务、工业、文娱等场景实现阵阵落地。当前行业呈现“技术智能化、场景多元化、生态一体化”三大趋势,一批具备核心技术与落地能力的企业脱颖而出,以下5 …

作者头像 李华
网站建设 2026/7/8 19:34:59

PLC连续可变S速度曲线算法仿真

一、前言1.连续可变S速度曲线:系统运行中可更改输入的运行速度,此速度曲线会重新规划,根据当前速度,加速度、减速度、重新规划速度。由S型斜坡柔性改变到新的速度2.S速度曲线使用三角函数曲线算法,其加速度、加加速度皆…

作者头像 李华
网站建设 2026/7/9 13:20:14

清华源替换Anaconda默认源,Miniconda下载速度飞跃

清华源替换Anaconda默认源,Miniconda下载速度飞跃 在人工智能项目开发中,你是否经历过这样的场景:运行一条 conda install pytorch 命令后,看着终端里缓慢爬升的进度条——几KB/s的速度,动辄半小时起的等待时间&#x…

作者头像 李华
网站建设 2026/7/8 22:54:27

AutoGPT技术揭秘:大语言模型如何成为自主任务驱动智能体?

AutoGPT技术揭秘:大语言模型如何成为自主任务驱动智能体? 在当今AI快速演进的浪潮中,一个根本性转变正在悄然发生——我们不再只是向机器提问“怎么做”,而是直接告诉它“我要什么”。这种从指令驱动到目标驱动的跃迁,…

作者头像 李华