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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 图像类别生成数字标签
  • C++基础篇(1)
  • 在ROS (Robot Operating System) 中,查看话题(topics)
  • 从0构建一款appium-inspector工具
  • aop的几种动态代理以及简单案例(1)
  • nginx配置ssl证书
  • JavaWeb__正则表达式
  • 27. 738.单调递增的数字,968.监控二叉树,贪心算法总结
  • 访问控制列表
  • linux 常用和不那么常用命令记录02 磁盘占用
  • 开源项目的机遇与挑战
  • 设计分享—国外后台界面设计赏析
  • 视频号的视频,一键就下载了,方法全在这儿了!
  • STM32智能无人机控制系统教程
  • 【D3.js in Action 3 精译】D3 入门基础之 Node、JavaScript 框架与 Observable 记事本
  • 【Linux系统编程】快速查找errno错误码信息
  • canvas 高仿 Apple Watch 表盘
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • es的写入过程
  • extract-text-webpack-plugin用法
  • HTTP--网络协议分层,http历史(二)
  • MYSQL 的 IF 函数
  • python学习笔记 - ThreadLocal
  • SpringCloud集成分布式事务LCN (一)
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 关于 Cirru Editor 存储格式
  • 理清楚Vue的结构
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​secrets --- 生成管理密码的安全随机数​
  • "无招胜有招"nbsp;史上最全的互…
  • #include
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (力扣)循环队列的实现与详解(C语言)
  • (面试必看!)锁策略
  • (三)Honghu Cloud云架构一定时调度平台
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (一)基于IDEA的JAVA基础1
  • (转载)利用webkit抓取动态网页和链接
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • *上位机的定义
  • . Flume面试题
  • .libPaths()设置包加载目录
  • .NET CLR Hosting 简介
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .net与java建立WebService再互相调用
  • .NET正则基础之——正则委托
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .pop ----remove 删除
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [20190416]完善shared latch测试脚本2.txt