zoukankan      html  css  js  c++  java
  • selenium2等待元素加载

    1.硬性等待

    Thread.sleep(8000);

    所谓的硬性等待就是,执行完相应操作就等待我设置的8s。无论网速快与慢,网速快的话,也许5s就打开网页了,可是程序必须接着等待剩下的3秒。

    网速慢的话,也许8s之内没有打开,此时执行下一步操作,会由于找不到元素,而fail case,所以非必要情况下,不要使用此等待方法。

    2.智能等待

    public void waitForElementToLoad(int timeOut, final By By) {

      try {

        (new WebDriverWait(driver, timeOut)).until(new ExpectedCondition<Boolean>() {
          public Boolean apply(WebDriver driver) {
            WebElement element = driver.findElement(By);
            return element.isDisplayed();
          }
        });
      } catch (TimeoutException e) {

      Assert.fail("超时!! " + timeOut + " 秒之后还没找到元素 [" + By + "]",e);
      }
    }

    此方法有两个参数,timeOut是等待元素的超时时间,就是说过了这个时间如果元素还没加载出来就报错。By对象,这个是你元素的定位方式比如By.id(“login”);
    这个方法会在给定timeOut去查找元素,如果在小于timeOut的时间内找到了元素,剩下的时间不在等待,直接执行接下来的操作。假如在规定的timeout时间内还没有找到元素,则会fail case,同时打印“超时!! * 秒之后还没找到元素 *”

    3.设置等待页面加载完毕

    由于网络原因或者电脑反应速度原因,想等待网页加载完毕之后再执行点击操作,所以:

    int pageLoadTime = 10;
    driver.manage().timeouts().pageLoadTimeout(pageLoadTime, TimeUnit.SECONDS);
    这段代码,加载driver.get(url)方法之前,他们等待你给定的时间,如果在给定时间内网页还是没有加载出来就会报错,如果在小于给定时间内加载完毕了,剩下的时间不再等待。

  • 相关阅读:
    C# BackGroundWorker控件演示代码
    C#多线程池演示例程下载图片
    反流技术之IE插件技术研究第二部分
    C# 从剪贴板中读取HTML中的中文字符出现乱码问题的解决方案
    C#单线程演示程序带参数
    C# 中as和is的用法总结
    Delphi关于记录文件的操作
    用PowerDesigner创建Access数据库
    常用Delphi开发资料网址
    等待外部应用程序的执行结果
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/5076713.html
Copyright © 2011-2022 走看看