强制等待: 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显式等待机制的更多相关文章

  1. Selenium+Java(六)Selenium 强制等待、显式等待、隐实等待

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

  2. 【java+selenium3】隐式等待+显式等待 (七)

    一.隐式等待 -- implicitlyWait 调用方式:driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit); / ...

  3. 基于Selenium2+Java的UI自动化(8)- 显式等待和隐式等待

    一.隐式等待 package com.automation.waits; import java.util.concurrent.TimeUnit; import org.openqa.seleniu ...

  4. selenium测试(Java)-- 显式等待(九)

    转自:https://www.cnblogs.com/moonpool/p/5668571.html 显式等待可以使用selenium预置的判断方法,也可以使用自定义的方法. package com. ...

  5. 【亲测显式等待】Selenium:元素等待的4种方法

    Selenium:元素等待的4种方法 1.使用Thread.sleep(),这是最笨的方法,但有时候也能用到而且很实用.   2.隐式等待,隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉We ...

  6. selenium的webdriver三种等待方式(显式等待WebDriverWait+implicitly_wait隐式等待+sleep强制等待)

    隐式等待是等页面加载,不是等元素!!! 1.显式等待 一个显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码.显式等待是等元素加载!!! 2.隐式等待,相当于设置全局的等待,在定位 ...

  7. [Selenium]显式等待 Explicit wait & 隐式等待 Implicit wait

    显式等待 Explicit wait 显示等待 , 就是明确的要等到某个元素出现或者某个元素满足某种条件,每隔一段时间检查一次,等不到,就一直等,如果在规定的时间内还没有找到,就跳出来检查间隔的时间和 ...

  8. 显式等待-----Selenium快速入门(十)

    上一篇说了元素定位过程中的隐式等待,今天我们来探讨一下显示等待.显式等待,其实就是在使用WebDriverWait这个对象,进行等待.显式等待对比隐式等待,多了一些人性化的设置,可以说是更细化的隐式等 ...

  9. selenium自动化之显式等待和EC(expected_conditions)模块

    很多人都有这种经历,selenium脚本当前运行没问题,过了一段时间再运行就报错了,然后过几天又好了.其中的原因估计60%的人都知道,是因为元素加载这块有问题.通常的解决方案就是加上sleep或者隐式 ...

随机推荐

  1. 为MySQL的source命令导入SQL文件配置参数

    为MySQL的source命令导入SQL文件配置参数 执行 mysql -uroot -p 输入密码后进入 MySQL 命令提示符 set charset utf8; source /root/xxx ...

  2. 记一次 GitLab 的迁移过程

    目录 1. 迁移背景 2. GitLab 整体架构介绍 3. GitLab 安装 配置选择 安装方式选择 安装的网络区域 安装 GitLab GitLab 常用命令 配置管理员账号密码 4. 配置 G ...

  3. 90%的开发者都不知道的UI本质原理和优化方式

    前言 很多开发者在工作中一直和UI打交道,所以认为UI非常的简单! 事实上对于90%的开发者来说,不知道UI的本质原理. 虽然在开发中,我们在接到产品的UI需求之后,可以走捷径照抄大型APP代码,但是 ...

  4. Manage sshd Service on CentOS

    Check the current sshd status: service sshd status Start sshd service: service sshd start Set sshd a ...

  5. STM32—TIMx输出PWM信号驱动MG996R舵机

    文章目录 一.前言 二.MG996R舵机简介 三.TIM定时器简介 四.通用定时器TIMx 1.TIMx主要功能 2.TIMx框图 3.计数单元 4.时钟选择 5.输出比较PWM 五.TIM3输出双路 ...

  6. bluecms安装错误一记

    菜鸡兴致勃勃下载了bluecms1.6准备大干一番 环境 phpstudy mysql 5.7.26 apache 2.4.39 php 7.3.4 结果安装第四步发现个这个问题   开始还以为自己这 ...

  7. Linux、Windows 下手动生成 sha256 等类型的校验文件

    目录 1 - 校验文件的作用 2 - Linux 下生成校验文件 3 - Windows 下生成校验文件 参考资料 版权声明 1 - 校验文件的作用 从网服务器下载文件,尤其是比较大的文件时,很容易由 ...

  8. 将JDK默认编码设置为UTF-8

    此博文非原创:参考小兵qwer   https://blog.csdn.net/xiaobing_122613/article/details/70209716 只是想留下对自己有用的东西,同时帮助更 ...

  9. Git在IDEA中的日常使用

    1.Git介绍Git对于做开发的小伙伴并不陌生,Git是现在比较流行的版本控制工具.Git的仓库分为本地仓库和远程仓库,当代码开发完成后,先提交(commit)到本地仓库,再推送(push)到远程仓库 ...

  10. C#中的几种锁:用户模式锁、内核模式锁、动态计数、监视锁

    参考网址: https://blog.csdn.net/weixin_43989331/article/details/105356008 C#中的几种锁:用户模式锁.内核模式锁.动态计数.监视锁介绍 ...