UI自动化编写测试脚本的几种等待时间方法

  • Post author:
  • Post category:其他




背景:

为了提高脚本的稳定性,我们需要在脚本中增加等待时间,比如到某个指定页面,要等待页面完全加载出来后,才能找到页面上我们想要的元素,尽可能避免 元素找不到情况;



三种等待方式介绍



强制等待

Thread.sleep(3000);

// eg:
public static native void sleep(long millis) throws InterruptedException;

最最最最容易 ,被大家常用的一种等待方法,但不推荐:

1.固定休眠时间设置,Java的Thread类里提供了休眠方法sleep,导入包后就能使用;

2.时间以毫秒 为单位;

3.以上执行到此时 不管什么线程就固定的等待三秒之后再接着执行后面的操作;

4.作用范围:仅作用于当前方法,当前操作之后休眠,一般在隐士等待和显示等待都不起作用时使用;



隐式等待(全局隐式等待)

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

// eg:
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

AndroidDriver androidDriver=null;
androidDriver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

在这里插入图片描述

//源码 selenium框架对外提供的接口,如下:

public interface Timeouts {
   
    WebDriver.Timeouts implicitlyWait(long var1, TimeUnit var3);

    WebDriver.Timeouts setScriptTimeout(long var1, TimeUnit var3);

    WebDriver.Timeouts pageLoadTimeout(long var1, TimeUnit var3);
}

推荐使用的一种等待方法之一:

1.implicitlyWait()方法比sleep()方法智能,sleep()方法只能在一个固定的时间等待,而implicitlyWait()可以在一个时间范围内等待;

2.implicitlyWait()方法,两个参数:一个接受时间,第二个接受时间度量也就是时间单位,

可以设定查找页面元素的最大等待时间,调用findElement()时没有立刻定位到该元素,则程序会每间隔一段时间 轮询查找( 默认是 0.5s)尝试判断页面DOM中是否存在该元素,设定时间内找到则继续向下执行,若超过设定等待时长(eg:全局的等待10s)还没找到,抛出NoSuchElementException;

<



版权声明:本文为qq_43787743原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。