当前位置: 首页 > news >正文

selenium等待

通常代码执行的速度⽐页⾯渲染的速度要快,如果避免因为渲染过慢出现的⾃动化误报的问题呢?可以使⽤selenium中提供的三种等待⽅法:

1. 隐式等待(Implicit Wait)

隐式等待适用于全局,它告诉 WebDriver 在查找元素时等待一定的时间,直到元素出现。
如果超时,WebDriver 不会抛出异常,而是返回 NoSuchElementException

适用场景

  • 页面加载速度不稳定,元素可能会晚一点出现。
  • 适合不需要精确等待时间的情况。
from selenium import webdriver

# 设置 Edge 浏览器
driver = webdriver.Edge()

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

# 访问网页
driver.get("https://example.com")

# 查找元素(如果元素未出现,则最多等待 10 秒)
element = driver.find_element("id", "someElement")

# 关闭浏览器
driver.quit()
  • implicitly_wait(10) 适用于 整个 WebDriver 生命周期
  • 只需要设置一次,之后所有 find_element() 调用都会等待。
  • 无法针对特定元素设置不同的等待时间

2. 显式等待(Explicit Wait)

显式等待用于等待某个特定元素出现,在超时时间内不断检查,直到条件满足。
它比隐式等待更精确,可以用于特定的元素。

适用场景

  • 只想等待某个特定元素,而不是所有元素。
  • 需要等待的条件较复杂,例如元素可见、可点击等。
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

# 设置 Edge 浏览器
driver = webdriver.Edge()

# 访问网页
driver.get("https://example.com")

# 等待最多 10 秒,直到元素可见
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "some
http://www.dtcms.com/a/69914.html

相关文章:

  • Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)
  • Linux 中 Git 使用指南:从零开始掌握版本控制
  • C语言_数据结构总结10:二叉树的递归/非递归遍历
  • 深入解析对象存储及工作原理
  • Vue.js 中 class 和 style 绑定的全面解析
  • SW草图欠定义
  • export、export default 和 module.exports 深度解析
  • 流水线(Pipeline)
  • JavaScript相关面试题
  • C语言的位域操作
  • 半导体可靠性测试解析:HTOL、LTOL与Burn-In
  • 【黑马点评|项目】万字总结(下)
  • 【R语言】pmax和pmin函数的用法详解
  • 【北上广深杭大厂AI算法面试题】人工智能大模型篇...矩阵乘法GEMM!以及为什么说GEMM是深度学习的核心?
  • 【云原生技术】编排与容器的技术演进之路
  • 信息系统运行管理员教程6--信息系统安全
  • 【深度解析:以“不要的心态”获取所求的本质逻辑】
  • 一周学会Flask3 Python Web开发-SQLAlchemy添加数据操作-班级模块
  • 告别XML模板的繁琐!Word文档导出,easy!
  • 穷举vs暴搜vs深搜vs回溯vs剪枝刷题 + 总结
  • 第5课 树莓派的Python IDE—Thonny
  • Gin(后端)和 Vue3(前端)中实现 Server-Sent Events(SSE)推送
  • DeepSeek + Excel:数据处理专家 具体步骤
  • 蓝桥杯备赛-二分-技能升级
  • C语言输入与输出:从零掌握数据的“对话”
  • STC89C52单片机学习——第20节: [8-2]串口向电脑发送数据电脑通过串口控制LED
  • MyBatis源码分析の配置文件解析
  • 创建postgis数据库
  • 【matlab例程】三维下的TDOA定位和EKF轨迹滤波例程,TDOA的锚点数量可自定义(订阅专栏后可获得完整代码)
  • 每日一题---腐烂的苹果(广度优先搜索)