当前位置: 首页 > 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

相关文章:

  • 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剪枝刷题 + 总结
  • 兰州大学教授安成邦加盟复旦大学中国历史地理研究所
  • 讲一个香港儿童的故事,《劏房的天空》获“周庄杯”特等奖
  • 福州千余公共道路泊车位装“智能地锁”续:运营公司被责令改正并罚款
  • 季后赛主场优势消失之谜,这事竟然要赖库里
  • 马上评丨未成年人“擦边”短视频岂能成流量密码
  • 27岁杨阳拟任苏木镇党委副职,系2020年内蒙古自治区选调生