Selenium自动化性能测试过程中,经常会出现取不到界面元素,主要原因是界面元素的加载与我们访问页面的时机不一致。可能是界面要素过多或者网络较慢,界面一直加载中;为了解决这种问题,selenium提供了等待方式,分为显式等待隐式等待

1、显式等待:
显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception。
处理方式1:通过线程等待函数,让自动化测试做一定时间的等待,Thread.sleep(1000);

使用此方法会出现两种不能避免的情况:
1.若设置的时间较短,仍不能解决上述问题;
2.若设置时间较长,会花费大量的等待时间。我们很难去确定等待时间的长度,因为加载时间的长度会受到外部环境的影响,比如:网络情况,应用的大小,主机配置,主机的内存和CPU的消耗情况。

处理方式2:就是明确的等到界面某元素出现或者某可点击等条件为止,否则一致等待至设定的时间之后跑出异常情况。
采用WebDriverWait类 + ExceptedConditions接口

在10秒以内等到该元素出现,则往下执行;否则超过10秒,依然找不到,就抛出异常。

代码1:new WebDriverWait(driver,10).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator")));
代码2:
WebElement element = (new WebDriverWait( driver, 10)).until(new ExpectedCondition<WebElement>(){

@Override
                                        public WebElement apply(WebDriver d){
                                                   return d.findElement( By.id("id locator"));
                                                   }
                                       }
                             );

2、隐式等待:

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

注意:

此处的隐式等待是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间, 一些人对此处有误解,认为是让Driver等一段时间, 确实某些时候能让Driver等一段时间, 但是影响是全局的,每次Driver执行找不到元素都会等待,假设某处将此值设置的太长,必须在执行完成之后还原回来,否则判断一个元素是否存在的时候。

Java Selenium中的几种等待方式的更多相关文章

  1. 关于selenium中的三种等待方式与EC模块的知识

    1. 强制等待 第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间. 看代码: 1 2 3 4 5 6 ...

  2. Selenium中的几种等待方式,需特别注意implicitlyWait的用法

    摘:http://blog.csdn.net/pf20050904/article/details/20052485 最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题 ...

  3. 转:Selenium中的几种等待方式,需特别注意implicitlyWait的用法

    最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. ...

  4. selenium中的三种等待方式(显示等待WebDriverWait()、隐式等待implicitly()、强制等待sleep())---基于python

    我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中 ...

  5. selenium中的三种等待方式

    1.强制等待,采用的time.sleep,然后后面加上要等待的时间: 2.隐性等待implicitly_wait,隐性等待设定后,会对之后的所有代码生效,会在设定的时间之内,不停的去查找元素,如果找到 ...

  6. Selenium学习之==>三种等待方式

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...

  7. selenium&appium中的三种等待方式---基于python

    我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中 ...

  8. python 中的三种等待方式

    为什么要用等待时间: 今天在写App的自动化的脚本时发现一个元素,但是往往执行脚本是报错( An element could not be located on the page using the ...

  9. selenium常用的三种等待方式

    一.强制等待 使用方法:sleep(X),等待X秒后,进行下一步操作. 第一种也是使用最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作, ...

随机推荐

  1. lua-nginx-module模块里ngx_lua的所有指令以及可用ngx所有方法

    http://www.04007.cn/article/430.html

  2. 阿里云免费购买SSL证书,nginx无缝升级https

    最近在升级交流学习社区,觉得有必要升级成https.以下是自己在升级中记录. 以下包括以下部分: 一.阿里云免费购买SSL证书 1.自己在阿里云申请了免费的,然后自己支付0元,购买了SSL证书 2.我 ...

  3. C# 《编写高质量代码改善建议》整理&笔记 --(四)资源管理&序列化

    1.显示释放资源需继承接口IDisposable 什么是资源:C#中每一个类型都代表一种资源,而资源又分为以下两类. 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象. 非托管资源 ...

  4. 第三节:dingo/API 最新版 V2.0 之 Creating API Endpoints (连载)

    对于这篇文章的标题,其实,直译就是创建api端点.但是,真的很难懂,我还是写为API路由吧.每篇,文章,我都会全部去进行实践操作,力求写一个好点的教程. 本文英文地址——>https://git ...

  5. Linux高级运维 第二章 Linux基本操作和自己动手组装服务器

    2.1  Linux网络相关概念和修改IP地址的方法 2.1.1  网卡的命名规则       Centos 6的网卡命名方式:它会根据情况有所改变而非唯一且固定,在CENTOS6之前,网络接口使用连 ...

  6. 基础知识:语言、编程、计算机组成、cpu、存储器

    2019年3月18日一.    语言:一种事物与另外一种事物沟通的介质.              编程语言:程序员与计算机沟通的介质.    编程:把要让计算机做的事用一种编程语言表达出来.    ...

  7. 微信小程序 picker 中range-key的坑

    <picker class='fr' bindchange="onChangeBuild" range-key="{{'num'}}" value=&qu ...

  8. html&css学习一

    HTML标签 HTML骨架 <HTML> <head> <title></title> </head> <body> </ ...

  9. git报错

    -Initial commit Untracked files nothing added to commit but untracked 代码并没有被成功提交,看信息是文件没有被tracked gi ...

  10. 服务器三:多线程epoll

    #include <fcntl.h> #include <sys/socket.h> #include <netinet/in.h> #include <ar ...