• 0
  • 0
分享
  • selenium处理页面等待时间的几种方式——软件测试圈
  • TIMI 2021-12-10 11:21:31 字数 1360 阅读 627 收藏 0

最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题,当某些元素不存在时,页面可能出现响应很久的情况,以下是本人总结的webdriver处理页面等待时间的几种方式:

1、显式等待

显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等除非在规定的时间之内都没找到,那么就跳出Exception。

/**
设置元素等待时间
@param driver
@param by
@param timeOut //等待时间,以秒为单位
/
public static void waitForLoad(WebDriver driver, final By locator, int timeOut) {
WebDriverWait wait = new WebDriverWait(driver, timeOut); 
// timeOut为等待时间,单位秒
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
boolean loadcomplete = d.findElement(locator).isDisplayed();
return loadcomplete;
}
});
}

2、隐式等待

driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS); //second为等待时间,单位秒

设置driver内findElement等方法的超时时间,该设置为全局设置,使用起来比较方便。

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

WebDriver会进行一个隐式等待,但参数只有时间,这就导致我需要什么元素出现,我不一定能等到它。

  private boolean isElementPresent(By by) {
    try {
         driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);?
         driver.findElement(by);?
         return true;?
     } catch (NoSuchElementException e) {?
         return false;?
     }
     }

得不到某个元素,我们就延迟一下...

3、线程休眠

Thread.sleep(3000); //线程停止3秒

使当前线程进入等待,Thread.sleep();这种等待属于死等,会强制等待一段时间,很容易让线程挂掉,使程序抛异常,不建议使用,影响自动化执行效率。所以我们要慎用此方法,适用于无法识别控件的情况下。


文章来源:百度文库

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、准备1.1 下载Postman 软件postman下载https://www.postman.com/1.2 首先把要进行压力测试的接口,进行测试,显示没有问题,状态为200二、压力测试步骤2.1 在接口处,设置参数,{{}}包住参数!外面还有双引号!2.2 选择Pre-request-Script,对变量进行编写代码postman.setEnvironmentVariable("openid",data["openid"]);2.3 一定不要忘了写断言,不然运行的时候总会提示一句话,额!具体我忘了截图,你遇到就知道了pm.test("St...
            0 0 2170
            分享
          •   质量控制过程确保产品的制造标准得到维持和改进。 质量控制过程使公司能够满足客户的期望,同时确保产品质量的一致水平。 采用这些标准创造了一种公司文化,鼓励所有员工追求高质量的生产标准。 对于希望将数据和分析数字化的质量控制团队来说,低代码和无代码软件可以改变游戏规则。  为什么要实施质量控制?  质量控制的主要目的是在制造过程中寻找任何纠正措施来改进产品。质量控制的一个重要组成部分是建立一个检查系统,概述可接受的产品参数并标准化生产过程。在整个生产线上建立和评估标准,员工在生产线上组装原材料并生产成品。在其开发的不同阶段测试每个产品有助于识别生产问题并快速修复它们。  公司通常会雇用专业人员...
            0 0 471
            分享
          • 接口自动化的工具现在有很多个选择,本篇文章着重介绍YAPI的使用方法;1、它首先是一个很好的接口维护的工具;开发同学的接口文档可以在此工具上维护;现在很多的文档的维护都是多人协同维护了,例如jira、石墨等。相对于postman更倾向于本地化,YAPI更能提现协同合作的优势。开发同学可以根据各自的分工来分别维护自己所负责模块的接口;而组长有分配的权限来给各个成员分配各个模块的查看和编辑的权限;在接口的编辑页面可以整理自己接口的信息,请求的参数以及返回的结构和信息,各种备注等等;开发的同学在维护完成接口后,测试同学就可以运动接口来进行接口的测试以及测试集合自动化测试的case编写了。2、单个接口...
            14 13 2361
            分享
          • 1、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTMLLinkValidater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTMLLinkValidater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链接和外部链接,在使用的时候应该注意,同时能够生成html格式的测试报告。如果系统用QTP进行自动化测试,也可以使用QTP的页面检查点检查链接。2、相关性检查:功能相关性:删除/增加一项会不会对其他项产生...
            12 12 868
            分享
          • 往往在测试中,大家觉得来了测试任务就测试,时间久了,反而忘记了还有什么规范?也就慢慢忽略了规范!规范的软件测试流程有助于需求条理化,将测试工作模块化,一切跟着计划走比通过脑袋记忆要更加的有条理。有的时候,工作任务比较繁琐,脑袋记忆力容易出现乱成一锅粥的情况,特别这个时候,软件测试计划就更加重要。下面结合实际情况对自己工作中测试流程进行简单的阐述。1.制定测试策略测试策略就是如何进行测试,运用何种手段进行测试。当用户提出新的需求时,测试人员应该和开发人员一起做测试需求分析,一般我们都会通过会议的形式去进行讨论分析,这样测试人员会对测试需求要有个大概的了解,需要是干什么的,包括哪些功能等等,而不至...
            0 0 1779
            分享
      • 51testing软件测试圈微信