appium自动化等待的三种方法

时间:2024-05-19 07:25:06

1、sleep()方法——固定等待时间
Thread.sleep(60000)强制等待60s
2、隐式等待implicitlyWait()——–全局等待时间
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
全局等待30s不管元素是否已经加载
1) 当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
2)换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间是0
3) 一旦设置了隐式等待,则它存在整个WebDriver 对象实例的声明周期中,隐式的等待会让一个正常响应的应用的测试变慢。
4) 它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。
implicitly_wait()方法比sleep() 更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。

3、显示等待WebDriverWait()
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement e = wait.until(new ExpectedCondition(){
@Override
public WebElement apply(WebDriver d) {
return
d.findElement(By.xpath(“//android.widget.RelativeLayout[@index=’2’]”));
}});
e.click();
WebDriverWait类的构造方法接受了一个WebDriver对象和一个等待最长时间(60秒)。然后调用until方法,其中重写ExpectedCondition接口中的apply方法,让其返回一个WebElement,即加载完成的元素,然后点击。默认情况下,WebDriverWait每500毫秒调用一次ExpectedCondition,直到有成功的返回,当然如果超过设定的值还没有成功的返回,将抛出异常

以上内容是转载某位大神的呢,感谢此大神,以下则为我的总结:

目前在学习appium,还是非常小白的阶段,总是弄混固定等待和全局等待。弄混的原因是不知道什么时候用这个等待。是在每次找元素之前都加这个等待呢还是其他。。。

终于我弄明白了,sleep为固定时间等待,如果使用则在找元素之前使用,会在此段时间内等待,不做任何操作。
implicitlyWait 为全局等待,在一个周期内只需要开头设置一次,之后在所有的找元素中都会等待直到元素找到为止,找不到则报异常。

第三种等待暂时没用到。
附上我的截图:
此为固定等待,因为我是在三个不同的页面点击返回,如果我不加这个固定等待,则有可能不在我想要的页面就进行了操作。所以必须等待下个页面出现以后,再点击返回。
appium自动化等待的三种方法

此为全局等待,全局只要写一个就可以啦
appium自动化等待的三种方法

相关文章