首页 > 技术文章 > app自动化的三大等待

scarlettlie 2021-06-09 22:27 原文

app自动化的三大等待与web自动化的三大等待的代码脚本一样

一.硬性等待

硬性等待无论元素是否出现,都必须等待设置的时间再继续执行后面的代码。

使用简单,但是容易浪费时间。所以一般和隐式等待或显式等待结合使用。

Thread.sleep(long millis);

二.隐式等待

在设置的超时时间范围内不断查找元素存在,直到找到元素则不再继续,或者超时未找到元素则失败。

特点:

隐性等待相对灵活,

针对全局的,在webdriver实例整个生命周期有效,但并不是所有元素都需要等待

硬性等待只要满足元素存在,不能适用条件更复杂的情况,比如元素可点击,元素可见

只对findelement才会有效果,因此有些element的api操作不会有等待,需要加上硬性等待

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

三.显式等待

显式等待通常是我们自定义的一段代码,用来等待某个条件发生后再继续执行后续代码。

优点:每隔一段时间扫描一次页面,检查元素是否满足等待结果条件,不满足则继续等待直到满足条件或超时。

缺点:不是全局设置,特定元素可以用这种方式处理。

WebDriverWait webDriverWait=new WebDriverWait(driver,5);
WebElement webElement=webDriverWait.until(ExpectedConditions.presenceOfElementLocated(by));
presenceOfElementLocated:页面元素在页面中存在
visibilityOfElementLocated:页面元素在页面存在并且可见
elementToBeClickable:页面元素是否在页面上可用和可被单击

推荐阅读