Selenium 等待
''' 环境: Python 3.8 selenium==3.141.0 urllib3==1.26.19 Chromium 109.0.5405.0 (32 位) '''
# 1 固定等待(time) # 固定待是利用python语言自带的time库中的sleep()方法,固定等待几秒。 # 这种方式会导致这个脚本运行时间过长,不到万不得已尽可能少用。 # (注:脚本调试过程时,还是可以使用的,方便快捷)
# -*- coding: UTF-8 -*-from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 设置固定等待
time.sleep(2)
driver.quit()
# 2 隐式等待(implicitly_wait()) # webdriver类提供了implicitly_wait()方法来配置超时时间。 # 隐式等待表示在自动化实施过程中,为查找页面元素或者执行命令设置一个最长等待时间。 # 如果在规定时间内页面元素被找到或者命令被执行完成,则执行下一步,否则继续等待直到设置的最长等待时间截止 # 注:隐式等待的好处是不用像固定等待方法一样死等时间N秒,可以在一定程度上提升测试用例的执行效率。 # 不过这种方法也存在一定的弊端,那就是程序会一直等待整个页面加载完成, # 也就是说浏览器窗口标签栏中不再出现转动的小圆圈,才会继续执行下一步。
# -*- coding: UTF-8 -*-from selenium import webdriverdriver = webdriver.Chrome()
# 设置隐式等待
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
driver.quit()
# 3 显示等待:WebDriverWait()类 # 显示等待:设置一个等待时间和一个条件,在规定时间内,每隔一段时间查看下条件是否成立, # 如果成立那么程序就继续执行,否则就提示一个超时异常(TimeoutException)。 # 通常情况下 WebDriverWait 类会结合 ExpectedCondition 类一起使用。
# 代码 1
# -*- coding: UTF-8 -*-from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWaitdriver = webdriver.Chrome()
driver.get('http://www.baidu.com')
# 最长超时时间设置为10秒,默认步长为0.5秒,默认抛出 NoSuchElementException 异常
element = WebDriverWait(driver, 10, 0.5).until(lambda driver: driver.find_element_by_id("kw"))
element.send_keys("selenium")
driver.quit()
# 代码 2
# -*- coding: UTF-8 -*-from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import Bydriver = webdriver.Chrome() driver.get('http://www.baidu.com') # 最长超时时间设置为 10 秒,默认步长为0.5秒,默认抛出 NoSuchElementException 异常 element = WebDriverWait(driver, 10, 0.5).until(lambda driver: driver.find_element(By.ID, 'kw')) element.send_keys("selenium") driver.quit()# -*- coding: UTF-8 -*-from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions from selenium.webdriver.common.by import Bydriver = webdriver.Chrome() driver.get('http://www.baidu.com')element = WebDriverWait(driver, 10, 0.5).until(expected_conditions.presence_of_element_located((By.ID, "kw")))''' id = 'id' param = (By.ID, id) element = WebDriverWait(driver, 10, 0.5).until(expected_conditions.presence_of_element_located(param)) ''' element.send_keys('selenium') driver.quit()
'''
# 等待元素出现
element = WebDriverWait(driver, 10, 0.5).until(lambda driver: driver.find_element_by_id("kw"))
element.is_displayed()# 等待元素消失
is_disappeared = WebDriverWait(driver, 10, 0.5), (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id('someId').is_displayed())
''''''
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
import selenium.webdriver.support.expected_conditions as EC
import selenium.webdriver.support.ui as ui# 一直等待某元素可见,默认超时10秒
def is_visible(locator, timeout=10):try:ui.WebDriverWait(driver, timeout).until(EC.visibility_of_element_located((By.XPATH, locator)))return Trueexcept TimeoutException:return False# 一直等待某个元素消失,默认超时10秒
def is_not_visible(locator, timeout=10):try:ui.WebDriverWait(driver, timeout).until_not(EC.visibility_of_element_located((By.XPATH, locator)))return Trueexcept TimeoutException:return False# 调用
is_not_visible('//input[@input="search-error"]')
'''
''' 参考: Python+Selenium自动化-设置等待三种等待方法 https://www.cnblogs.com/xiao-xue-di/p/11531917.htmlSelenium使用之——添加等待时间的三种方式 https://blog.csdn.net/qq_28284093/article/details/80117206Selenium 三种等待方式详解 (强制等待、隐式等待、显示等待) https://www.cnblogs.com/hls-code/p/16051659.htmlselenium WebDriverWait类等待机制的实现 https://cloud.tencent.com/developer/article/1736313selenium.webdriver.support.ui 和selenium.webdriver.support.wait的区别 https://blog.csdn.net/Charley_Leo/article/details/108546433 '''
相关文章:
Selenium 等待
环境: Python 3.8 selenium3.141.0 urllib31.26.19 Chromium 109.0.5405.0 (32 位) # 1 固定等待(time) # 固定待是利用python语言自带的time库中的sleep()方法,固定等待几秒。 # 这种方式会导致这个脚本运…...
安装easy-handeye
一、aruco_ros配置 mkdir -p ~/ros_ws/src cd ~/ros_ws/src git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git cd .. catkin_make 二、visp配置(需要联外网下载东西,不然会一直出问题) sudo apt-get install ros-melodic-…...
【面试题】MySQL 索引(第二篇)
1.索引 索引是数据库中的一个核心概念,它对于提高数据库查询效率至关重要。以下是索引的详细概念解析: 一、索引的定义 基本定义:索引是一个排序的列表,其中存储着索引的值和包含这些值的数据所在行的物理地址(或逻…...
4. 小迪安全v2023笔记 javaEE应用
4. 小迪安全v2023笔记 javaEE应用 大体上跟随小迪安全的课程,本意是记录自己的学习历程,不能说是完全原创吧,大家可以关注一下小迪安全。 若有冒犯,麻烦私信移除。 默认有java基础。 文章目录 4. 小迪安全v2023笔记 javaEE应…...
anaconda修改安装的默认环境
📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…...
MySQL 9.0 正式发行Innovation创新版已支持向量
从 MySQL 8.1 开始,官方启用了新的版本模型:MySQL 创新版 (Innovation) 和长期支持版 (LTS)。 根据介绍,两者的质量都已达到可用于生产环境级别。区别在于: 如果希望尝试最新的功能和改进,并喜欢与最新技术保持同步&am…...
基于Java+SpringMvc+Vue技术的智慧校园系统设计与实现
博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…...
【蔬菜网元宇宙】—— 探索农业的未来之旅
在数字化时代的浪潮中,技术和创新不断塑造着我们的生活方式。现在,这种变革已经延伸到了农业领域。蔬菜网,一个专注于农产品供应链的领先平台,自豪地宣布我们正式迈入元宇宙的世界——一个全新的虚拟空间,旨在彻底改变…...
淘宝商品历史价格查询(免费)
当前资料来源于网络,禁止用于商用,仅限于学习。 淘宝联盟里面就可以看到历史价格 并且没有加密 淘宝商品历史价格查询可以通过以下步骤进行: 先下载后,登录app注册账户 打开淘宝网站或淘宝手机App。在搜索框中输入你想要查询的商…...
14-47 剑和诗人21 - 2024年如何打造AI创业公司
2024 年,随着人工智能继续快速发展并融入几乎所有行业,创建一家人工智能初创公司将带来巨大的机遇。然而,在吸引资金、招聘人才、开发专有技术以及将产品推向市场方面,人工智能初创公司也面临着相当大的挑战。 让我来…...
WPF界面设计-更改按钮样式 自定义字体图标
一、下载图标文件 iconfont-阿里巴巴矢量图标库 二、xaml界面代码编辑 文件结构  对应的图标代码 Fonts/#iconfont 对应文件位置 <Window.Resources><ControlTemplate TargetType"Button" x:Key"CloseButtonTemplate"…...
开源项目的机遇与挑战
随着全球经济和科技环境的快速变化,开源软件项目的蓬勃发展成为了开发者社区的热门话题。越来越多的开发者和企业选择参与开源项目,以推动技术创新和实现协作共赢。本文将从开源项目的发展趋势、参与开源的经验分享,以及开源项目的挑战三个方…...
Linux实现CPU物理隔离
文章目录 背景使用 taskset 命令使用 cgroups案例 背景 在 Linux 上实现 CPU 的物理隔离(也称为 CPU 隔离或 CPU pinning),可以通过将特定的任务或进程绑定到特定的 CPU 核心来实现。这可以提高系统性能,尤其是在需要实时响应的应…...
springer latex模板参考文献不显示
原因 his is BibTeX, Version 0.99d (TeX Live 2024) The top-level auxiliary file: sn-article.aux I couldn’t open style file sn-mathphys-num.bst —line 2 of file sn-article.aux : \bibstyle{sn-mathphys-num : } I’m skipping whatever remains of this command I…...
使用Vue3、Pinia和Vite5打造高度还原的抖音仿制项目
douyin-vue 是一个模仿 抖音|TikTok 的移动端短视频项目。Vue 在移动端的"最佳实践",媲美原生 App 丝滑流畅的使用体验。使用了最新的 Vue 技术栈,基于 Vue3、Vite5 、Pinia实现。数据保存在项目本地,通过 axios-mock-adapter 库拦…...
stm32基本定时器
Driver_TIM6.c 需要注意立即进入中断问题,原因是预分频寄存器并没有更新预分频系数。 #include "Driver_TIM6.h" #include "Delay.h" /*** description: 给定时器6进行初始化* return {*}*/ void Driver_TIM6_Init(void) {/* 1. 给定时器6开启…...
网络安全基础-1
棱角社区:[~]#棱角 ::Edge.Forum* 专业名词 操作系统 文件下载 linux:下载命令 1. wget命令 wget是一个非常强大的命令行下载工具,支持HTTP、HTTPS、FTP等多种协议,并具备断点续传、递归下载等功能。 基本用法: 下载文件到…...
SSH远程访问及控制
目录 一、SSH远程管理 1、SSH定义 2、SSH客户端和服务端 3、SSH工作类型 3.1、对称加密 3.2、非对称加密 4、SSH工作原理 公钥传输原理 4.1、基本概念 4.2、工作过程 5、OpenSSH服务器 二、SSH远程登录方式 1、SSH直接远程登录 2、SSH指定端口登录 3、黑白名单 …...
Qt 绘图详解
文章目录 头文件和构造函数启用反锯齿功能绘制矩形绘制圆角矩形绘制椭圆绘制圆弧绘制弦绘制凸多边形绘制图片绘制直线绘制多条直线绘制多点连接的线绘制路径绘制扇形绘制点绘制文本擦除矩形区域填充矩形填充路径 头文件和构造函数 #include "mainwindow.h" #include…...
Python 爬虫与 Java 爬虫:相似之处、不同之处和选项
在信息时代,网络上可用的数据量巨大且不断增长。为了从这些数据中提取有用的信息,爬虫已成为一种重要的技术。Python 和 Java 都是流行的编程语言,都具有强大的爬虫功能。本文将深入探讨 Python 爬虫和 Java 爬虫之间的差异,以帮助…...
开源工具any2card:任意格式内容智能转换结构化卡片实战指南
1. 项目概述:从“任意格式”到“卡片”的智能转换革命最近在折腾个人知识库和内容管理时,我遇到了一个老生常谈但又无比棘手的问题:信息格式的碎片化。我的资料散落在各处,有PDF论文、网页文章、TXT笔记、甚至是一些图片里的文字。…...
别再为手眼标定头疼了!用Matlab+机器人工具箱搞定Eye-in-Hand/Eye-to-Hand(附完整代码)
机器人视觉实战:从零实现手眼标定与平面九点标定 在工业自动化领域,机器人视觉系统的精度直接影响着抓取、装配等关键任务的可靠性。许多工程师在理论阶段能够理解手眼标定的数学原理,但一到实际代码实现环节就陷入困境——数据格式如何准备…...
AC鸭的温度墙
题目描述AC鸭在实验室里看到了一面很长的温度墙,这面墙从左到右一共有 n 个位置。一开始,每个位置的温度都是 0。接下来 AC鸭会进行 m 次加热操作。每次操作给出 l,r,v表示把第l个位置到第r个位置的温度都加上上v。所有操作结束后,AC鸭想知道…...
3个关键场景解析:如何使用iperf3 Windows版精准诊断网络性能问题
3个关键场景解析:如何使用iperf3 Windows版精准诊断网络性能问题 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 在当今数字化时代&…...
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟的BP阶段犹豫不决,错过了最佳选择࿱…...
HEIF Utility终极指南:如何在Windows上免费打开和转换苹果HEIF照片
HEIF Utility终极指南:如何在Windows上免费打开和转换苹果HEIF照片 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 还在为iPhone照片在Windows电脑上…...
Intel RealSense D435i 标定实战:从工具安装到VINS配置全流程解析
1. 准备工作:认识D435i与标定原理 第一次拿到Intel RealSense D435i时,我盯着这个火柴盒大小的设备看了半天——它凭什么能实现三维感知?拆开包装后发现,这玩意儿居然集成了双目红外相机、RGB彩色相机和IMU惯性测量单元。但问题来…...
别再死记公式了!用Python+NetworkX可视化理解关系闭包(附完整代码)
用PythonNetworkX玩转关系闭包:从数学抽象到动态可视化的实战指南 第一次接触"关系闭包"这个概念时,我盯着课本上那些晦涩的数学符号和矩阵运算整整半小时,依然云里雾里。直到我用Python的NetworkX库将社交网络中的关注关系画成图形…...
CANN asc-devkit Maxs API参考
Maxs 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/…...
用Arduino和MAX30102做个心率血氧仪,从硬件连线到算法调试全流程避坑
从零构建Arduino心率血氧仪:MAX30102实战指南 开篇:为什么选择MAX30102? 在可穿戴健康设备爆发的时代,心率血氧监测已成为智能手环的标配功能。而MAX30102这颗高度集成的光学传感器,正以医用级精度和低功耗特性成为创客…...
