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
'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/41855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12、matlab中for循环,if else判断语句,break和continue用法以及switch case语句使用

1、前言 在MATLAB中,for循环用于迭代一个固定次数的循环。可以使用if else语句在循环中进行条件判断,根据条件的不同执行相应的代码块。break和continue可以用于控制循环的执行流程,break用于提前结束循环,而continue用于跳过当前…

Win11系统文件夹预览无法预览PDF文件,PDF阅读器是adobe acrobat

三步走 首先,打开文件夹预览功能 然后,设置adobe acrobat为默认PDF打开应用 最后,打开在Windows资源管理器中启用PDF缩略图,正常设定后,会显示配置文件,稍等一会。

EFUSE中redundancy program/read的理解

现在有空,整理下前段时间关于efuse中redundancy program/read模式的理解,下面以TEF22ULP128X32HD18_PURM这款芯片为例,进行笔记整理,如有侵权或不妥之处,请时告知并及时处理。 1 redundancy的作用 efuse中存放的是芯…

在Window下编辑Linux代码文件

1.先启动虚拟机上的linux系统,输入ipconfig拿到linux的ip地址 2.在windows上安装PuTTY软件,用于连接Linux系统,输入Linux的ip即可连接进去linux系统,用的是SSH协议 3.以root运行putty控制台控制LINUX系统,并下载apt-…

安卓面试题系列--【1】

目录 前言一、选择题1. 下列哪些语句关于内存回收的说明是正确的? (b )2. 下面异常是属于Runtime Exception 的是(abcd)(多选)3. Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c4. 下列程序段的输出结果是:(b &am…

24.6.30

星期一: 补cf global round26 D cf传送门 思路:把s中非a字符存下来,共m个,然后暴力检测,复杂度有点迷 代码如下: ll n;void solve(){string s; cin &…

基于若依的文件上传、下载

基于若依实现文件上传、下载 文章目录 基于若依实现文件上传、下载1、前端实现-文件上传1.1 通用上传分析1.2 修改实现上传接口 2、后端实现-文件上传3、后端实现-文件下载4、前端实现-文件下载 官网其实也写了,但是我是自己改造封装了一下,再次迈向全栈…

快手大模型首次集体亮相,用AI重塑内容与商业生态

7月6日,在2024世界人工智能大会期间,快手举办了以“新AI新应用新生态”为主题的大模型论坛,会上,快手大模型首次集体亮相,视频生成大模型可灵、图像生成大模型可图等产品的多项新功能正式发布。 继图生视频、视频续写…

Photoshop属于什么软件 Photoshop缓存文件清理 Mac清理PS缓存 苹果电脑ps内存满了怎么清理

对于所有热爱使用Adobe Photoshop的Mac用户来说,这款软件无疑是创意工作的强大助手。但是,随着时间的积累,你可能会发现Photoshop开始变得有点慢,反应迟钝。这通常是因为Photoshop的缓存和临时文件堆积,占用了宝贵的系…

C++ this 指针到底是个什么特殊的指针

什么是 this 指针? 简单来说,this 指针是一个指向当前对象的指针。每个成员函数(除了静态成员函数)在被调用时,系统都会隐式地传递一个 this 指针给函数。通过 this 指针,成员函数可以访问调用它的那个对象…

ROS melodic版本卸载---Ubuntu18.04

sudo apt-get remove ros-melodic-desktop-fullsudo apt-get remove gazebo* 删除依赖关系 sudo apt autoremove删除与ros关联的所有文件 sudo apt-get purge ros-* sudo rm -rf /etc/ros找到.bashrc文件删除含ros的环境配置语句 全部删除完毕,可以去计算机下的…

Allegro SPB 简介

系统互联设计优化并加速了高性能,高密度的互连设计,建立了从IC制造,封装到PCB的一套完整设计流程。 系统互连是一个信号的逻辑,物理和电气连接,以及相应的回路和功率配送系统。 1.对PCB板级的电路系统设计流程: 包括…

python项目实战——一元线性回归预测模型

文章目录 1.一元线性回归简介2.环境准备3.数据准备4.可视化数据5.构建线性回归模型 在数据科学领域,预测分析是一项核心技能。一元线性回归作为预测分析的基石,能够帮助我们理解一个自变量如何影响一个因变量,并预测未来的数据点。本文将介绍…

解决onlyoffice警告的一些思路

解决思路&#xff1a; 1、监听出现警告的事件&#xff1a;已经实现 <script setup> import {message} from "ant-design-vue";const onError (event) > {console.log("ONLYOFFICE Document Editor reports an error: code " event.data.error…

干货 | 2024云安全责任共担模型(免费下载)

以上是资料简介和目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a;

VO,DTO,PO快速问答,看完这篇就能理解上手!

在实际开发中&#xff0c;通常实体类domain中就有很多类型&#xff0c;这些类型之间的相互转换也是不太好理解&#xff0c;在这里我整理了一些他们之间互相转换的问题&#xff0c;以问答形式&#xff0c;帮助大家更好的理解&#xff01; 问题1&#xff1a;在 Java 开发中&#…

基于Java技术的人事管理系统

你好&#xff0c;我是专注于计算机科学领域的小野。如果你对人事管理系统感兴趣或有相关需求&#xff0c;欢迎私信交流。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; B/S模式、Java技术、SpringBoot 工具&#xff1a; Eclipse、MySQL、浏览…

第四届BPAA算法大赛成功举办!共研算法未来

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

kubernetes集群部署:node节点部署和cri-docker运行时安装(四)

安装前准备 同《kubernetes集群部署&#xff1a;环境准备及master节点部署&#xff08;二&#xff09;》 安装cri-docker 在 Kubernetes 1.20 版本之前&#xff0c;Docker 是 Kubernetes 默认的容器运行时。然而&#xff0c;Kubernetes 社区决定在 Kubernetes 1.20 及以后的…

【C++】开源:量化金融计算库QuantLib配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍量化交易库QuantLib配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#…