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

selenium 显示等待12种预置条件包括定制等待条件

基础

等待元素可见

例:设置最大等待时间为 15 秒,直到指定元素在页面上可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.element_to_be_clickable((By.ID,'element_id')))

等待元素不可见

例:设置最大等待时间为 15 秒,直到指定元素在页面上不可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.invisibility_of_element_located((By.ID,'element_id')))

等待元素可点击

例:设置最大等待时间为 15 秒,直到指定元素变为可点击状态。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.element_to_be_clickable((By.ID,'element_id')))

等待文本可见

例:设置最大等待时间为 15 秒,直到指定元素的文本可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.text_to_be_present_in_element((By.ID,'element_id'),'Expected_Text'))

等待文本在元素里可见

例:设置最大等待时间为 15 秒,直到指定文本在元素的值中可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.text_to_be_present_in_element_value((By.ID,'frame_id'),"Expected_Title"))

等待元素存在

例:设置最大等待时间为 15 秒,直到指定元素存在 DOM 中。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.presence_of_element_located((By.ID,'element_id')))

等待元素消失

例:设置最大等待时间为 15 秒,直到指定元素从 DOM 中移除。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.staleness_of(driver.find_element(By.ID,'element_id')))

URL 包含

例:设置最大等待时间为 15 秒,直到当前 URL 包含某个特定字符串。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.url_contains('expected_substring'))

标题包含

例:设置最大等待时间为 15 秒,直到当前页面标题包含某个字符串。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.title_contains('Expected Title')))

窗口可见

例:设置最大等待时间为 15 秒,直到新窗口出现并可见。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.new_window_is_opened(driver.window_handles))

等待切换iframe

例:设置最大等待时间为 15 秒,直到切换到某个 iframe 元素里。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import ByWebDriverWait(driver, timeout=15).until(EC.frame_to_be_available_and_switch_to_it((By.ID,'frame_id')))

高级

自定义条件等待 JavaScript 执行

等待 JavaScript 执行结果返回预期值。

from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout=wait_time).until(lambda driver: driver.execute_script('return document.readyState') == 'complete')

更改代码检查条件的频率

例:设置每隔 2 秒检查一次条件,总超时为 15 秒,直到页面加载完成。

from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout=15, poll_frequency=2).until(lambda d: d.execute_script("return document.readyState") == "complete")

指定应自动处理哪些异常

例:在等待期间自动忽略 NoSuchElementException 异常,直到找到特定元素或超时。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import NoSuchElementExceptionWebDriverWait(driver, timeout=15, ignored_exceptions=[NoSuchElementException]).until(lambda d: d.find_element(By.ID, "element_id"))

更改总超时长度

例:设置最大等待时间为 15 秒,直到找到特定元素。

from selenium.webdriver.support.wait import WebDriverWaitWebDriverWait(driver, timeout=15).until(lambda d: d.find_element(By.ID, "element_id"))

自定义超时消息

例:如果页面未在 10 秒内加载完成,捕获 TimeoutException 并打印自定义超时消息。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import TimeoutExceptiontry:WebDriverWait(driver, timeout=15).until(lambda d: d.execute_script("return document.readyState") == "complete")
except TimeoutException:print("页面加载超时,请检查网络连接。")

相关文章:

  • 如何改变音频声音大小?关于改变音频大小的方法介绍
  • 线程与线程安全,生产消费者模型
  • Python+appium自动化+夜神模拟器inspector部署验证
  • 【工具类】证书自动续签免费版 正式发布
  • fiddler抓包07_抓IOS手机请求
  • Pinia从安装到使用
  • Metasploit渗透测试之服务端漏洞利用
  • 在vue2项目中使用dart-sass
  • 【JavaEE】——内存可见性问题
  • 基于keras 的神经网络股价预测模型
  • 基于springboot+vue医院挂号就诊系统设计与实现
  • C#和数据库高级:虚方法
  • android 页面布局(1)
  • 章管家 listUploadIntelligent.htm SQL注入漏洞
  • matlab r2024a、matlab R2024b保姆级安装教程
  • [deviceone开发]-do_Webview的基本示例
  • “大数据应用场景”之隔壁老王(连载四)
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Git初体验
  • Invalidate和postInvalidate的区别
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JAVA 学习IO流
  • javascript面向对象之创建对象
  • JavaScript设计模式与开发实践系列之策略模式
  • Koa2 之文件上传下载
  • nodejs调试方法
  • Node项目之评分系统(二)- 数据库设计
  • React的组件模式
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Terraform入门 - 3. 变更基础设施
  • 利用DataURL技术在网页上显示图片
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 推荐一个React的管理后台框架
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (2)nginx 安装、启停
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (WSI分类)WSI分类文献小综述 2024
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (多级缓存)多级缓存
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (汇总)os模块以及shutil模块对文件的操作
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)Sql Server 保留几位小数的两种做法
  • (转)大道至简,职场上做人做事做管理
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET 5.0正式发布,有什么功能特性(翻译)