51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 870|回复: 1
打印 上一主题 下一主题

[转贴] selenium处理页面等待时间的几种方式

[复制链接]
  • TA的每日心情
    无聊
    6 天前
  • 签到天数: 941 天

    连续签到: 3 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-1-12 13:23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题,当某些元素不存在时,页面可能出现响应很久的情况,以下是本人总结的webdriver处理页面等待时间的几种方式:
    1、显式等待
    显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.
    1. /**
    2. 设置元素等待时间
    3. @param driver
    4. @param by
    5. @param timeOut ?//等待时间,以秒为单位
    6. /
    复制代码
    1. public static void waitForLoad(WebDriver driver, final By locator, int timeOut) {
    2. WebDriverWait wait = new WebDriverWait(driver, timeOut); ?// timeOut为等待时间,单位秒
    3. wait.until(new ExpectedCondition<Boolean>() {
    4. public Boolean apply(WebDriver d) {
    5. boolean loadcomplete = d.findElement(locator).isDisplayed();
    6. return loadcomplete;
    7. }
    8. });
    9. }
    复制代码
    2、隐式等待

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

    设置driver内findElement等方法的超时时间,该设置为全局设置,使用起来比较方便。
    隐式等待, 此处的隐式等待是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间,? 一些人对此处有误解,认为是让Driver等一段时间,? 确实某些时候能让Driver等一段时间, 但是影响是全局的,每次Driver执行 找不到元素都会等待此处设置的时间,? 假设某处将此值设置的太长,必须在执行完成之后还原回来,否则判断一个元素是否存在的时候,就会遇到很坑爹的问题。?? 改进后的方法如下:
    WebDriver会进行一个隐式等待,但参数只有时间,这就导致我需要什么元素出现,我不一定能等到它,
    1. private boolean isElementPresent(By by) {
    2.     try {
    3.          driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
    4.          driver.findElement(by);
    5.     return true;
    6.      } catch (NoSuchElementException e) {?
    7.        return false;?
    8.      }
    9.      }
    复制代码
    得不到某个元素,我们就延迟一下...
    3、线程休眠
    Thread.sleep(3000); //线程停止3秒

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



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-6 00:09 , Processed in 0.061415 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表