Appium的三种等待机制

发布时间 2023-06-19 10:42:03作者: 肥仔鸭

appium三种等待方式:

   (1)强制等待

   (2)隐式等待

   (3)显式等待

 

三种等待方式之间的区别:

 1、强制等待

使用方式:time.sleep()

强制执行对应的等待时间后,才能执行下面的操作语句,影响脚本运行的速度,一般不推荐

  2、隐式等待

使用方式:driver.imolicitly_wait()

相对于强制等待来讲,较智能。设置隐式等待不影响下面脚本的执行,当元素可以被定位到,则继续执行;如果超过时长还没有定位到,则会抛出异常

隐式等待是全局的,设置时间不宜过长。当元素处于不可交互的状态时就会触发隐式等待,多次设置的话后一次会覆盖前一次。

这种方法也存在一个弊端,就是程序会一直等到整个页面加载完成才会继续执行下一步,比如某些时候想要的页面元素早就加载完了,但是由于个别JS等资源加载稍慢,此时程序仍然等待全部页面加载完成后才会继续执行下一步,无形中加长了测试用例的执行时间

3、显示等待

使用方式:

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions

WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable(element))

显式等待使用前需要先定义元素,设置显式等待,直到某个元素可以被定位条件成立后,则不再等待,继续执行下面的操作。

 

总结:

1、一般不推荐强制等待,页面确实没有定位的元素,再使用该方式更合理一些

2、显示等待和隐式等待相对来讲更智能

3、根据不同的应用场景使用不同的等待方式