刚接触Selenium隐式等待与显示等待时有一些困惑,这两种方式到底有什么优劣,我们应该在何种情况下选择哪种等待方式?
下面我们来分析一下这它们各有什么特点。
一般来说,做UI自动化测试时可能会用到三种等待方式 :
1、Thread.sleep 线程等待
2、selenium提供的隐式等待
3、selenium提供的显式等待
首先,线程等待很简单,执行时会阻塞整个线程,而且必须要等到等待时间过完才能继续向下执行,一般我们在自动化测试中可以作为步骤执行之间的一个固定间隔来使用,比如每一步操作之间可以固定设一个0.5~1秒的间隔时间,以避免操作速度太快造成一些意料之外的问题。可以把它封装起来方便调用。
1 public static void sleep(intsec) {2 try{3 Thread.sleep((long)(sec * 1000));4 } catch(InterruptedException e ) {5 e.printStackTrace();6 }7 }
其次,隐式等待。只要设置一次,在WebDriver实例的整个生命周期都是生效的,并且相对于线程等待,这个只要一旦发现了元素在DOM树中出现就可以继续向下执行。
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
写起来是挺方便的。但是我们来看一下selenium框架中对于implicitlyWait方法是如何描述的
/*** Specifies the amount of time the driver should wait when searching for an element if it is
* not immediately pr