selenium 隐式等待如何使用_selenium 中使用等待的三种方法

2023-11-07

现在很多的 web 网站使用 AJAX 技术。当页面加载到浏览器,这个页面的很多元素显示出来的可能不一致。如果一个元素还未加载出来,在定位的时候,就会抛出异常:ElementNotVisibleException。这个时候就要使用等待方法解决。Webdriver 可以使用三种类型的等待方法:线程休眠、隐式等待和显示等待。

1.线程休眠

Thread.sleep(); //线程休眠,Java的Thread类里提供了休眠方法sleep,以毫秒为单位

Thread.sleep(1000); //等待1秒

----执行到这步就固定的等待 1 秒之后再接着执行后面的操作

当然了有缺点,还很大,一般调试时可以使用,实际运行 case 不要使用

2.隐式等待

隐式等待就是等待固定长度的时间。默认设置是 0 秒。一旦设置了隐式等待时间,它的作用范围就是 Webdriver 对象实例的整个生命周期,每次 Driver 执行找不到元素都会等待此处设置的时间

WebDriver driver = new ChromeDriver();

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);//设置全局等待5秒

driver.get("**********");

WebElement Element = driver.findElement(By.id("********"));

缺点比上个好一点,但是还是在实际应用中不能用,因为实际等待过程中时间比较长

3.显式等待

这个相对上面两个就比较完美了,显示等待是只要条件成立,立即执行后续代码,如果没有满足条件,就会始终在这里等待条件成立,时间超出依然找不到,就抛出异常。

new WebDriverWait(driver, 15).until(ExpectedConditions.presenceOfElementLocated(By.id("***")));

上面的代码最多等待 15 秒,超时就会抛出 TimeoutException,如果执行到 1 秒时就出现这个元素了,就会马上继续执行后续代码。

driver:浏览器驱动

15:等待最长超时时间

WebDriverWait 后面可以使用的 until() 或者 until_not() 方法

until(method, message='')

参数使用 Expected Conditions 类中的判断方法验证,直到结果返回值为 True

until_not(method, message='')

参数使用 Expected Conditions 类中的判断方法验证,直到结果返回值为 False

Expected Conditions 类中常用的一些判断方法,下面方法中,有的传的是 locator,有的传的是 element,使用时要注意区分开来

titleIs:判断当前页面的 title 是否等于预期

titleContains:判断当前页面的 title 是否包含预期字符串

urlToBe:判断当前页面的 URL 是否等于预期

urlContains:判断当前页面的 url 是否包含预期字符串

presenceOfElementLocated:判断某个元素是否被加到了 dom 树里,并不代表该元素一定可见

visibilityOfElementLocated:判断某个元素是否可见.可见代表元素非隐藏,并且元素的宽和高都不等于 0

elementIfVisible:如果给定元素是可见的且具有非零大小,否则为 null

presenceOfAllElementsLocatedBy:判断是否至少有 1 个元素存在于 dom 树中。

textToBePresentInElement:判断某个元素中的 text 是否包含了预期的字符串

textToBePresentInElementValue:判断某个元素中的 value 属性是否包含了预期的字符串

invisibilityOfElementLocated:判断某个元素中是否不存在于 dom 树或不可见

invisibilityOfElementWithText:判断带有文本的元素要么不可见,要么文本不存在于元素上

elementToBeClickable:判断某个元素中是否可见并且是可以使用的,这样的话才叫 clickable

elementToBeSelected:判断某个元素是否被选中了,一般用在下拉列表

elementSelectionStateToBe:判断某个元素的选中状态是否符合预期

alertIsPresent:判断页面上是否存在 alert

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selenium 隐式等待如何使用_selenium 中使用等待的三种方法 的相关文章

  • Excel VBA判断最后一行/列

    判断到哪里结束应该是Excel VBA最常见的操作之一 下面代码能实现这个功能 Function LastColumn As Long Dim ix As Long ix ActiveSheet UsedRange Column 1 Act
  • 记一次pptp实践经历

    由于公司业务需求 需要搭建vpn服务器以供外部用户传送数据 所以需要采用客户端到网关的方式的VPN VPN服务器的类型很多 如IPSec L2TP PPTP SSLVPN OPENVPN等 考虑到安全稳定性的因素 专业的vpn设备肯定是首要
  • casual discovery Toolbox使用(R语言做因果分析)

    casual discovery Toolbox使用 cdt casual discovery Toolbox 是一个用于因果关系发现的开源工具包 里面包括10多个算法 其中一些是用R语言开发的所以需要安装R的一些东西 1 安装R和RStu
  • 黑客工具Armitage

    Armitage介绍 Armitage是一款Java写的Metasploit图形界面化的攻击软件 可以用它结合 Metasploit中已知的exploit来针对主机存在的漏洞自动化攻击 通过命令行的方式使用Metasploit难度较高 需要
  • Git——Day2(使用git管理远程仓库)

    1 使用远程仓库目的 作用 备份 实现代码共享集中化处理 2 如何将本地仓库同步到git远程仓库 命令 git push 将本地提交到远程 步骤1 工作区 Work Directory 暂存区 步骤2 暂存区 提交到git仓库 Git Re
  • Unity InputField 拉起手机系统键盘

    inputField ActivateInputField ActivateInputField将自动拉起键盘 隐藏移动设备上屏幕键盘附带的文本输入显示区 白色区域 仅适用于iOS设备生效 inputField shouldHideMobi
  • 多线程总结

    一 多线程 1 什么是进程 什么是线程 进程是一个应用程序 1个进程是一个软件 线程是一个进程中的执行场景 执行单元 一个进程可以启动多个线程 对于java程序来说 当在DOS命令窗口中输入 java HelloWorld 回车之后 会先启
  • GBDT算法详解

    GBDT基本思想 GBDT的基本结构是决策树组成的森林 学习方式是梯度提升 具体的讲 GBDT作为集成模型 预测的方式是把所有子树的结果加起来 GBDT通过逐一生成决策子树的方式生成整个森林 生成新子树的过程是利用样本标签值与当前树林预测值
  • dp(动态规划)思考

    dp的核心思想是分治策略和表存储 分治策略并非dp所独有 很多算法都运用了把问题拆解为子问题的做法 比如递归 表存储应该是dp比较独有的一种方式 通过存储一些中间结果 可以避免重复计算 从而提升程序运行的速度 def max length
  • 简述3032路pcm帧的结构_基于5G NSA组网结构下用户体验提升研究

    摘要 针对现阶段5G NSA组网结构模式下 开展5G特性研究 以研究5G新一代通信技术与5G相关技术特点为前提 结合实际测试与分析结果 通过对DC双连接 时隙配比以及MASSIVE MIMO差异性3个方面进行分析测试对比 大幅度提升NSA组
  • UnityWebRequest向后端Get数据,后端显示 code 400, message Bad request version 和 HTTPStatus.BAD_REQUEST

    结论 我遇到这个问题是因为UnityWebRequest Get url 中的url是 https localhost port 但是用python flask写的后端服务器url却是 http localhost port 当我把Unit
  • JDBC(二)

    DatabaseMetaData 接口 通过这个接口中的方法可以查看数据库的整体综合信息 DatabaseMetaData 给出的信息描述 DBMS 所提供的事务支持水平 比如 查看驱动程序 数据库 的版本号等 boolean suppor
  • Node.js后端开发 - 进阶篇 #8 express框架之路由模块的封装1

    目录 一 前言 二 路由模块的封装 1 初始化项目 安装express框架 1 npm init y 初始化项目 生成package json文件 2 npm init y 和 npm init 区别 3 安装 express 框架 生成
  • 卸载 SQL Server Management Studio 的操作工具

    我们今天是要和大家一起讨论的是卸载 SQL Server Management Studio 时所要用到的实际操作工具 以及对实现卸载 SQL Server Management Studio 的实际操作步骤的具体描述 以下就是文章的主要内
  • Windows下 Cmake 没有生成makefile文件

    Windows下 Cmake 没有生成makefile文件 不是为了生成解决方案的 针对指令操作 1 主要是因为编译器选择的问题 很有可能选择到了vs的编译器MSVC 了导致生成了解决方案 2 如下操作 使用cmake G Unix Mak
  • 2023年最好用的办公AI工具,让你工作效率提升10倍!

    2023年是AI工具大爆发的一年 在效率办公领域 同样涌现出了很多优秀的AI办公工具 小编亲测了几款 都是宝藏好用的App 以下排名不分先后 一起来看看吧 AI办公工具哪个好 GitMind Notion AI 酷表ChatExcel 通义
  • 计算机老师副业能做什么,教师除了本职工作,还能做哪些副业?

    原标题 教师除了本职工作 还能做哪些副业 本文来源于微信公众号 教师帮 作者 小磊哥 图 互联网 如有转载 请联系并注明原出处 不知老师在学校有没有发现这么一种情况 当你正在为这个月的工资怎么分配而发愁的时候 坐在你身边的同事却春风得意 好
  • 模糊控制器 Matlab 源码程序设计

    模糊控制器 Matlab 源码程序设计 模糊控制是指在不确定 复杂的环境中 通过将自然语言转为数学形式 使用一定的逻辑运算来处理模糊信息 从而实现对系统的控制 在实际应用中 模糊系统已被广泛应用于各种领域 如自动控制 图像处理 数据挖掘等方
  • 软件测试用例编写方法

    边界值分析方法 概念 边界值其实就是一种黑盒测试方法 边界值本质上就是有效等价类和无效等价类的边界 1 边界范围节点 边界值的三个概念 上点 边界值上面的这个点 就是上点 正好等于 内点 有效等价类中的任意一个点 区间范围内的数据 离点 边

随机推荐

  • 改变数据类型

    int 是32 long 是64 numpy改变 pytorch改变 np th list 互换
  • CCF-CSP真题《202305-1 重复局面》思路+python,c++满分题解

    想查看其他题的真题及题解的同学可以前往查看 CCF CSP真题附题解大全 试题编号 202305 1 试题名称 重复局面 时间限制 1 0s 内存限制 512 0MB 问题描述 题目背景 国际象棋在对局时 同一局面连续或间断出现3次或3次以
  • 如何实现概率性事件

    游戏中经常会遇到概率性的问题 比如装备升级的成功率 合成宝石的成功率 洗装备时出现随机属性条数的概率等 这些概率性事件具体是怎么实现的呢 在网上看了一些相关的文章 总结一下 首先需要了解两个函数rand 和srand 下面是百科里面的解释
  • 如何存储Ajax请求的响应值

    如何存储Ajax请求的响应值 一 背景 二 代码部分 三 总结 一 背景 开发者使用Ajax请求网络 获取到了返回的结果 但开发者不想将回调函数写的过于冗长 因此希望将Ajax请求的返回值存储到一个变量中 方便后期取用 二 代码部分 代码部
  • Qt简介以及工程创建

    Qt是一种跨平台应用程序和UI开发框架 只需要一次性开发应用程序 可应用于不同的系统 Qt不是一个严格的前后端 而是一种框架 Qt Creator是一种全新跨平台 Qt IDE集成开发环境 可以单独使用 也可以与Qt库和开发工具组成一套完整
  • Unhandled exception at 0x00291422 in x.exe: 0xC0000005: Access violation writing location 0x37ACCE08

    源码如下 include
  • 线性表顺序存储の介绍、应用 与 实践(第二章: 线性表 )

    一 线性表的介绍 线性表 线性表 linear list 是n个具有相同特性的数据元素的有限序列 线性表是一种在实际中广泛使用的数据结构 常见的线性表 顺序表 链表 栈 队列 字符串 线性表在逻辑上是线性结构 也就说是连续的一条直线 但是在
  • 代码覆盖度工具OpenCppCoverage(cpp)、EclEmma(java)、Coverage(python)使用

    一 OpenCppCoverage cpp OpenCppCoverage是一个运行在windows上的程序 其不是在编译时进行插桩 而是在运行时 因此保证了代码和测试的一致性 参考文档 https github com OpenCppCo
  • 【c/c++】#pragma once 与 #ifndef 的区别解析

    原文地址 http blog csdn net hkx1n article details 4313303 作用 为了避免同一个文件被include多次 C C 中有两种方式 一种是 ifndef方式 一种是 pragma once方式 在
  • 智能指针使用陷阱

    智能指针使用陷阱 1 不能把一个原生指针交给多个智能指针管理 int x new int 10 unique ptr
  • android同步目录,如何使用FolderSync在安卓手机上同步文件夹到坚果云?

    FolderSync 是一款Android 端的文件同步工具 可以将手机中的文件自动同步到云端空间或者PC端 支持包括 FTP WebDAV Dropbox Amazon S3 FTP FTPS SFTP WebDAV等 可以使用WebDA
  • 几种图像的分割方法汇总

    图像分割指的是将原图像按照灰度 纹理 颜色 形状等划分成不同的区域 因此 在同一个区域间 呈现出具备一些相同的特点 而在不同的区域间 分割出的各个图像会有一定的差别 1 基于阈值的分割方法 基于阈值的分割方法是按照原图像的灰度特征划分出一个
  • k8s——kubectl

    目录 一 k8s管理操作方法 二 陈述式资源管理方法 1 基本信息查看 1 1 查看k8s版本信息 1 2 查看资源对象简写 1 3 查看集群信息 1 4 配置kubectl自动补全 1 5 node节点查看日志 2 基本信息查看 2 1
  • 大数据高频面试题【目录】

    大数据高频面试题 目录 小标题既超链接 点击可直接跳转 手写代码 Linux Shell Hadoop Flume Kafka Hive HBase Sqoop Scala Spark 项目中的常见问题 JavaSE Redis MySQL
  • LM393 电压比较器及其典型电路介绍

    这几天都在看一些开源项目 好多代码都没有什么注释 看烦了 看看小芯片吧 LM393 主要用途 限幅器 脉冲发生器 方波发生器 延时发生器 数字逻辑门电路 多频振荡器等等 引脚分布图 等效电路图 同相端电压大于反向端电压时 输出高电平 同相端
  • 【python】使用matplotlib绘制柱状图

    在制作图标时需要绘制柱状图 下面对其进行了绘制 主要就是使用matplotlib的bar函数 bar函数官方API为 matplotlib pyplot bar 下面是从一篇论文中随意截取的一段话 进行后续的绘制图像 import matp
  • 服务器故障排查方法总结

    服务器故障排查方法总结 问题描述 查找步骤 1 查找top检查服务器负载是否有问题 2 在服务器中查看网站的访问记录 3 这个时候先对数据库进行重启 对apache进行重启 4 查找数据库错误日志 问题描述 每当出现网站访问不了的时候 估计
  • Java list修改某个元素值的方法

    修改list中下标为index对象的值 set index element 增添 add index element
  • 在Android上修改读取IMEI码的方法

    我们知道 如果是移动设备 厂家都提供了IMEI码写入及读出的方法 但由于我们的是非移动设备 可是我们也需要写入IMEI码 供第三方的软件读取 如正版地图等 我们找到frameworks base telephony java android
  • selenium 隐式等待如何使用_selenium 中使用等待的三种方法

    现在很多的 web 网站使用 AJAX 技术 当页面加载到浏览器 这个页面的很多元素显示出来的可能不一致 如果一个元素还未加载出来 在定位的时候 就会抛出异常 ElementNotVisibleException 这个时候就要使用等待方法解