软件测试学习之路

Selenium 三种等待元素出现的方式

2019-05-31  本文已影响0人  乘风破浪的姐姐

Selenium 等待元素出现的方式有以下三种
1、显式等待
通俗点说,就是死等,很死板不灵活的等待。
即在指定的时间内一定要等到某个元素的出现或可操作的状态,如果等不到,就一直等,直到在规定的时间之内都要操作的元素仍没找到,那么就抛出Exception

  WebDriverWait wait = new WebDriverWait(driver, 20)
  /**
     * 等待页面元素出现
     *
     * @param xpath
     */
    public void waitWebElementDisplay(String xpath) {
        long startTime = System.currentTimeMillis();
        wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath)));
        long endTime = System.currentTimeMillis();
        float seconds = (endTime - startTime) / 1000F;

        log.debug("等待时间:" + Float.toString(seconds) + " seconds.");
    }

   /**
     * 等待输入框enable
     *
     * @param webElement
     */

    public void waitElementClickable(WebElement webElement) {
        long startTime = System.currentTimeMillis();
        wait.until(ExpectedConditions.elementToBeClickable(webElement));
        long endTime = System.currentTimeMillis();
        float seconds = (endTime - startTime) / 1000F;

        log.debug("等待时间:" + Float.toString(seconds) + " seconds.");
    }

上述代码中,设置要等待的时间为20秒.如果没有满足until()方法中的条件,就会始终在这里wait 20秒,仍然找不到,就抛出异常。

2、隐式等待
隐式等待在整个自动化测试的脚本中看不到隐式等待的语句。但它会在每个页面加载的时候自动等待;隐式等待只需要声明一次,一般在打开浏览器后进行声明(即加载对应浏览器driver之后)。声明之后对整个WebDriver的实例的生命周期都有效,后续无需重复声明。如果不设置全局元素超时时间,默认超时时间为0 。
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); //1指等待1秒
更多详细说明请参考文章:隐式等待

3、强制等待
即线程休眠,在代码中强制当前正在执行的线程休眠(暂停执行)
Thread.sleep(long millis);

注意,上述三种等待方式,如果显示等待和隐式等待同时使用,则最大等待时间为两个等待时间的最大值。

上一篇下一篇

猜你喜欢

热点阅读