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:页面元素是否在页面上可用和可被单击