appium中的等待

1、死等

Thread.sleep(5000);

在操作类型(点击、滑动、拖拽、输入等)或者业务类型需要等待时间时使用

2、隐式等待(智能等待:元素找到了就不等了)——针对多个元素查找 生效

在查找元素时在设定的时间范围内不断查找直到查找超时,一旦找到元素就停止查找,继续执行代码。全局性设置,设置以后对其之后的查找元素方法生效,可以在代码中随时进行切换;

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);//查找元素超时时间5秒 
driver.manage().timeouts().implicitlyWait(5500, TimeUnit.MILLISECONDS);//5.5秒
driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS);//换成默认的等待时间

如果添加了隐式等待表示下面所有的findby查找方法都遵循此事件,如果写等待事件为0表示默认时间,可随时改变

3、显式等待(智能等待:元素找到了就不等了)——针对单一元素查找生效

针对单独元素进行查找定位或者判断的智能等待, 在查找元素时在设定的时间范围内不断查找直到查找超时,一旦找到元素就停止查找,继续执行代码,主要针对单一元素查找

//以下方法效果相同,只是不同的写法
1. WebDriverWait wait=new WebDriverWait(driver,5); //找元素,如果元素存在则返回改对象,不存在则报错,超时时间5秒
 AndroidElement suibian=(AndroidElement) wait.until(ExpectedConditions.presenceOfElementLocated(By.id("com.zhihu.android:id/btn_confirm1"))); 
2. //自定义指定时间内返回查找的元素
WebDriverWait wait1=new WebDriverWait(driver,10);
AndroidElement element=wait.until(new ExpectedCondition() { 
@Override
public AndroidElement apply(WebDriver driver) {
return (AndroidElement) driver.findElement(By.id("login_and_register"));
}
});
3. //指定时间内判断元素文本是否包含指定文本,用在渐进变化的元素上如“获取验证码”,如toast按钮
WebDriverWait wait2=new WebDriverWait(driver,60);
Boolean flag=wait2.until(new ExpectedCondition() { 
@Override
public Boolean apply(WebDriver arg0) { // TODO Auto-generated method stub
return driver.findElement(By.id("login_and_register")).getText().contains("登录或注册");
}
});

 

你可能感兴趣的:(Appium自动化)