appnium显式等待机制
强制等待: sleep不推荐全局隐式等待
全局隐式等待:
在服务端等待
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
显式等待
在客户端等待
new WebDriverWait(driver).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(").action;
◆显示等待与隐式等待相对,显示等待必须在每个需要等待的元素前面进行声明
◆是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔段时 间检测一次当前页面某个元素是否存在,
◆如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作
◆如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为: NoSuchElementException
◆显示等待用到的两个类:
◆WebDriverWait和ExpectedConditions两个类
◆显式等待可以等待动态加载的ajax元素,显式等待需要使ExpectedCondtions来检查条件
◆一般验证页面上元素的呈现
◆title出现首先出现title
◆dom树出现presence ,还不完整
◆Css出现 (可见visibility)
◆js出现,js特效执行( 可点击clickable)
◆html文档是自上而下加载的,
◆js文件加载会阻塞Html内容的加载,有些JS异步加载的方式来完成js的加载
◆样式表下载完成之后会跟之前的样式表一 起进行解析,会对之前的元素重新渲染
webDriverWait的用法
wait= new WebDriverWait(driver,10 ,1000);

timeOutInSeconds:最长超时时间,默认以秒为单位
sleepInMills :检测的间隔步长,默认0.5S
WebDriverWait(driver,120) .until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@text='通讯录']")));
ExpectedConditions类:
presenceOfElementLocated判断元素是否被加到了DOM里,并不代表该元素一定可见
用法:
waituntil(ExpectedConditions.presenceOfElementLocated(By.id("home_ search));
visibilityOfElementLocated判断某个元素是否可见,可见代表元素非隐藏,并且元素的宽
和高都不等于0
用法
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("home_ search"));
@Test
@DisplayName("测试名称:隐式等待")
public void waityinshi() throws InterruptedException {
wait=new WebDriverWait(driver,10,1000);
//隐式等待 点击搜索后等待10s
driver.findElement(By.id("com.xueqiu.amdroid:id/home_search")).click();
driver.findElement(By.id("com.xueqiu.android:id/search_input_text")).sendKeys("阿里巴巴");
WebElement element= wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@text=BABA]")));
System.out.println(element.getAttribute("enable"));
element.click();
总结三种等待方式:
隐式等待,尽量默认都加上,时间限定在3-6s,不要太长,为了所有的find_ element方 法都有一一个很好的缓冲
显式等待,用来处理隐式等待无法解决的一些问题,比如:文件上传(可以设置长一点),文件上传需要设置20s以上,但是如果设置隐式等待,它会在每个find方文件上传需要设置20s以上,
但是如果设置隐式等待,它会在每个find方法都等这么长时间,一旦发现没有找到元素,就会等20s以后才抛出异常,影响case的执行效率,这时候就需要用显式等待
强制等待: 一般不推荐,前两种基本能解决绝大部分问题,如果某个控件没有任何特征,只能强制等待,这种情况比较少
appnium显式等待机制的更多相关文章
- Selenium+Java(六)Selenium 强制等待、显式等待、隐实等待
前言 在实际测试过程中,由于网速或性能方面的原因,打开相应的网页后或在网页上做了相应的操作,网页上的元素可能不会马上加载出来,这个时候需要在定位元素前等待一下,等元素加载出来后再进行定位,根据实际使用 ...
- 【java+selenium3】隐式等待+显式等待 (七)
一.隐式等待 -- implicitlyWait 调用方式:driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit); / ...
- 基于Selenium2+Java的UI自动化(8)- 显式等待和隐式等待
一.隐式等待 package com.automation.waits; import java.util.concurrent.TimeUnit; import org.openqa.seleniu ...
- selenium测试(Java)-- 显式等待(九)
转自:https://www.cnblogs.com/moonpool/p/5668571.html 显式等待可以使用selenium预置的判断方法,也可以使用自定义的方法. package com. ...
- 【亲测显式等待】Selenium:元素等待的4种方法
Selenium:元素等待的4种方法 1.使用Thread.sleep(),这是最笨的方法,但有时候也能用到而且很实用. 2.隐式等待,隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉We ...
- selenium的webdriver三种等待方式(显式等待WebDriverWait+implicitly_wait隐式等待+sleep强制等待)
隐式等待是等页面加载,不是等元素!!! 1.显式等待 一个显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码.显式等待是等元素加载!!! 2.隐式等待,相当于设置全局的等待,在定位 ...
- [Selenium]显式等待 Explicit wait & 隐式等待 Implicit wait
显式等待 Explicit wait 显示等待 , 就是明确的要等到某个元素出现或者某个元素满足某种条件,每隔一段时间检查一次,等不到,就一直等,如果在规定的时间内还没有找到,就跳出来检查间隔的时间和 ...
- 显式等待-----Selenium快速入门(十)
上一篇说了元素定位过程中的隐式等待,今天我们来探讨一下显示等待.显式等待,其实就是在使用WebDriverWait这个对象,进行等待.显式等待对比隐式等待,多了一些人性化的设置,可以说是更细化的隐式等 ...
- selenium自动化之显式等待和EC(expected_conditions)模块
很多人都有这种经历,selenium脚本当前运行没问题,过了一段时间再运行就报错了,然后过几天又好了.其中的原因估计60%的人都知道,是因为元素加载这块有问题.通常的解决方案就是加上sleep或者隐式 ...
随机推荐
- 为什么大家都在用WebRTC?
WebRTC代表网络实时通信.它是一种非常令人兴奋,强大且具有高度破坏性的尖端技术和标准.自从WebRTC诞生以来,80%的浏览器都开始支持它.有数据显示,2017年~2021年期间,WebRTC市场 ...
- mitmproxy第一次尝试-猿人学第九题
启动 mitmdump -s http_proxy.py -p 9000 替换js代码 # -*- coding: utf-8 -*- import re main_url = 'http://mat ...
- ASPX页面传参中文乱码处理
前端 function() { var msg='这是一段中文参数'; window.location.href="New.aspx?name="+escape(msg); } 后 ...
- 冒泡排序、选择排序、直接插入排序、快速排序、折半查找>从零开始学JAVA系列
目录 冒泡排序.选择排序.直接插入排序 冒泡排序 选择排序 选择排序与冒泡排序的注意事项 小案例,使用选择排序完成对对象的排序 直接插入排序(插入排序) 快速排序(比较排序中效率最高的一种排序) 折半 ...
- 我的大学Android开发学习之路——从开始到微信/支付宝/抖音Offer
前言 笔者2016年高考考入华中科技大学计算机科学与技术专业. 2017年底(大二寒假)拿到今日头条(字节跳动)深圳研发中心Android开发实习生Offer,在深圳研发中心实习至2018年3月. 2 ...
- GUI编程简介
GUI编程(淘汰) GUI编程怎么学? 这是什么 它怎么玩 该如何去在我们平时运用 class -- 可阅读 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1 ...
- 算法竞赛中的常用JAVA API :大数类(转载)
5.算法竞赛中的常用JAVA API :大数类 摘要 java中的基础数据类型能存储的最大的二进制数是 2 ^ 63 - 1 对应的十进制数是9223372036854775807(long类型的最大 ...
- 字符串对比 BASIC-15
字符串对比 代码 import java.util.Scanner; /*给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等 ...
- 课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统
课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架: ...
- Shell-02-数据类型
shell数据类型 shell常用的数据类型有 字符串.整数型.数组 字符串 字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号 建议使用双引号,因为双 ...