前言

在实际测试过程中,由于网速或性能方面的原因,打开相应的网页后或在网页上做了相应的操作,网页上的元素可能不会马上加载出来,这个时候需要在定位元素前等待一下,等元素加载出来后再进行定位,根据实际使用选择需要的等待方式。

一、强制等待

强制等待是利用time模块的sleep方法来实现,最简单粗暴的等待方法。但是此方法影响脚本的执行效率,所以不太推荐使用此方法。

//强制等待1S
Thread.sleep(1000);

二、隐式等待

隐式等待只能作用于元素的等待。

如果元素在指定的时间内找到,则不会继续等待,否则在指定时间内未找到元素则抛出NoSuchElementException。
作用域是全局的,跟driver的生命周期一样,一般定义在父类中,只要设置隐式等待后,页面所有的元素都会被绑定这种等待机制,只需设置一次,全局有效(只作用于元素),直到driver实例被关闭。

//隐式等待等待5秒
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

三、显式等待

除了作用于元素等待还可以实现各种场景的等待,例如页面加载等。
智能的等待方式,元素在指定的时间内找到,则不会继续等待,否则抛出TimeOutException。
非全局设置,可以针对不同的元素绑定不同的等待机制。

//显式等待3秒
WebDriverWait wait = new WebDriverWait(driver, 3);
//3秒内找不到此元素,TimeOutException报错
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.name("wd")))

扩展

ExpectedConditions其他用法

1. titleIs判断当前页面的title是否等于预期。
2. titleContains判断当前页面的title是否包含预期字符串。
3. urlToBe判断当前页面的url是否等于预期。
4. urlContains判断当前页面的url是否包含预期字符串。
5. presenceOfElementLocated判断元素是否出现,出现就通过。
6. visibilityOfElementLocated判断某个元素是否可见,可见代表元素非隐藏。
7. elementToBeSelected页面元素处于被选中状态。

ExpectedConditions还有很多其他方法,在此不一一列举。

Selenium+Java(六)Selenium 强制等待、显式等待、隐实等待的更多相关文章

  1. “全栈2019”Java多线程第三十一章:中断正在等待显式锁的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  2. Java编程的逻辑 (71) - 显式锁

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  3. Java并发编程系列-(4) 显式锁与AQS

    4 显示锁和AQS 4.1 Lock接口 核心方法 Java在java.util.concurrent.locks包中提供了一系列的显示锁类,其中最基础的就是Lock接口,该接口提供了几个常见的锁相关 ...

  4. share point 已在此服务器场中安装 ID 为 15/b7a69889-1789-4855-b8bd-9a3b4cfd7fc0 的功能。请使用强制属性显式地重新安装此功能。

    部署步骤“添加解决方案”中出现错误: 已在此服务器场中安装 ID 为 15/b7a69889-1789-4855-b8bd-9a3b4cfd7fc0 的功能.请使用强制属性显式地重新安装此功能. 英文 ...

  5. C++ 不具有继承关系的类之间的显式,隐式转换 2013-07-11 15:41

    好久没有写blog了,今天在学习c#的时候看到某一章节 讲类的隐式与显式转换.特此留笔,以供后续参考之用. 关于显式,隐式转换有些争论,说什么不建议隐式转换.但是个人认为非必要,如果有良好的基础书写基 ...

  6. dll的加载方式主要分为两大类,显式和隐式链接

    之前简单写过如何创建lib和dll文件及简单的使用(http://blog.csdn.net/betabin/article/details/7239200).现在先再深入点写写dll的加载方式. d ...

  7. 显式与隐式(ExplicitAndImplicit)

    显式与隐式(Explicit And Implicit) 1.概念 1.1 显式 实现的单词Explicit意思是清楚的.明确的.详述的.所以,显式的“显”是指明显且清楚的实现,相对于接口来说,就是明 ...

  8. 【RS】CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Collaborative Filtering-CoupledCF:在推荐系统深度协作过滤中学习显式和隐式的用户物品耦合

    [论文标题]CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Colla ...

  9. Selenium之显式、隐式等待

    selenium自动化页面元素存在异常发生的原因有以下几点: ① 页面加载时间过慢,需要查找的元素程序已经完成,但是页面还未加载成功.此时可以加载页面等待时间. ② 查找的元素没有在当前的iframe ...

随机推荐

  1. 记一次C#调用C++踩过的坑

    一般来说,C#调用C++生产的dll,如下: C++的项目要设置为"导出dll的项目",而且导出的函数,一般为: extern "C" __declspec(d ...

  2. 学习笔记34_EF上下文管理

    *上下文对象dbContext最好不要频繁的使用Using(var dbContext = new ....):那么就会产生过多的数据库交互:而且每个dbContext中村的数据,由于操作不同,数据可 ...

  3. Map Reduce 论文阅读

    Map Reduce 是 Google 在 2004 年发表的一篇论文,原文链接 在这 后来 Hadoop 直接内置了这一框架. 读完之后记录一下心得. 主要背景:MapReduce 的出现很具有工程 ...

  4. [考试反思]1105csp-s模拟测试102: 贪婪

    还是有点蠢... 多测没清空T3挂40...(只得了人口普查分20) 多测题要把样例复制粘两遍自测一下防止未清空出锅. 然而不算分... 其实到现在了算不算也不重要了吧... 而且其实T3只考虑最长路 ...

  5. 和manacher有关的乱写

    当初学kmp hash的时候被教导manacher非常的鸡肋 今天因为一篇神奇的题解我忍不住颓废了两节课把它学了 思路,代码都比较好懂 虽然它不如各种自动机霸气,唯一的功能貌似就是$O(n)$求出所有 ...

  6. MinIO 参数解析与限制

    MinIO 参数解析与限制 MinIO server 在默认情况下会将所有配置信息存到 ${HOME}/.minio/config.json 文件中. 以下部分提供每个字段的详细说明以及如何自定义它们 ...

  7. linux shell中使用sed命令

    例1:批量的将变量的值代替指定文件中的指定内容. #!/bin/bash for i in {1..100} mgr_port=`expr $i + 5345` data_port=`expr $i ...

  8. zookeeper集群模式安装

    服务器节点规划: 节点1:192.168.0.103 节点2:192.168.0.104 节点3:192.168.0.105 安装zookeeper,将zookeeper上传到三个服务器,保存在/ho ...

  9. 关于Python中的yield的理解

    生成器:yield表达式构成的函数就是生成器:每一个生成器都是一个迭代器(但是迭代器不一定是生成器).return就是迭代器: yield的功能类似于return,不同之处在于它返回的是生成器. 什么 ...

  10. esp8266 smartconfig-智能配网分析和使用及注意事项

    基本知识:   乐鑫⾃主研发的 ESP-TOUCH 协议采⽤的是 Smart Config(智能配置)技术,帮助⽤户将 采⽤ ESP8266EX 和 ESP32 的设备(以下简称“设备”)连接⾄ Wi ...