Java+selenium自动化测试之三大睡眠方法

一、简介

在自动化测试中,“睡眠”指的是让程序在执行测试过程中暂停一段时间。这个暂停的时间可以是固定的,也可以是根据需要动态设定的。在测试过程中使用睡眠的主要目的是为了等待某些操作的完成或者等待一定的时间间隔,以确保后续的操作能够在合适的时机进行。

二、selenium中的三大睡眠

1、sleep(强制性等待)

强制等待,顾名思义就是强迫你等待呗,你等也得等不等也得等,没有商量。不管页面是否加载完,强制指定等待时间后继续执行。不建议用这种方式 。sleep()方法以毫秒为单位  

格式:

//休息一秒
Thread.sleep(1000)

优缺点:硬性等待使用简单,但由于不知道一个线程需要等待多久,时间设置小了不行,设置长了往往会造成时间的浪费,影响性能。

3.2ImplicitlyWait(隐式等待) 

implicitlyWait()方法比sleep()方法智能,sleep()方法只能在一个固定的时间等待,而implicitlyWait()可以在一个时间范围内等待,称为隐式等待。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

//隐式等待采用全部设置,也就是说,你所有的findElement方法都会隐式等待10s,java代码,采用方式如下:driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

隐式等待一般是在driver初始化之后设置,只用设置一次,全局生效可用,只适用于找元素findElement方法,其它方法没有等待效果,找到元素后就停止了,如果找到元素的时间大于设置的时间,则报一个找不到元素的异常。 

此处共有三个方法,分别为查找元素的等待超时时间、页面加载等待超时时间和js脚本运行超时时间,方法如下代码所示:

System.setProperty("webdriver.chrome.driver", "D:\\test\\driver\\chromedriver.exe");
ChromeDriver chrome = new ChromeDriver();
//此处为设定页面加载超时时间为30s
chrome.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
//此处为设定元素查找最长超时时间为10s
chrome.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//此处为设置js脚本运行超时时间为30s
chrome.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);

优缺点:隐式等待相对灵活,但是设置是针对全局的,并不是所有的元素都需要等待,也不能适用条件更复杂的情况,如元素肉眼不可点击,元素不可见时不能用 

3、Explicit wait(显式等待) 

显示等待是等待指定元素设置的等待时间,在设置时间内,默认每隔0.5s检测一次当前的页面这个元素是否存在,如果在规定的时间内找到了元素则执行相关操作,如果超过设置时间检测不到则抛出异常。默认抛出异常为:NoSuchElementException。

【场景1:登录一个网站,输入用户名和密码后,点击登录,需要加载好几秒钟才能进入用户中心。例如你登录你网银,用户名和密码验证通过后,它需要等几秒,才能显示你账户信息,这几秒,它需要去数据库查询数据并显示在前端。
场景2:你登录一个旅行网站,填好了出发起点和目的地,点击搜索,需要查询等待几秒,然后给你显示车票信息。】

例子1:自带的条件

显式等待每隔一段时间扫描一次页面,检查元素是否满足结果条件,检查元素是否存在,不存在则继续等待,直到找到或超时, 该方式不是全局设置 ,推荐使用

当页面的某些元素需要鼠标放上去才展示出来时,显示等待的presenceoOfElementLocatde方法相当隐式等待,不可直接点击,需要配合鼠标操作才可点击

例2:自定义条件

自定义条件需要自定义我们需要等待的条件

三、总结 

蓝桥杯软件测试用的睡眠方法用Thread.sleep方法,后面两种方法我是作为扩展,如有不准确的地方请前辈指教。

  • 50
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值