APPium+java如果找到这个元素则继续执行下面的元素,实现方法
方法
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
public class Chazhaoyuansu {
/**
* 如果找到这个元素则继续执行下面的元素,找不则返回失败false,返回布尔值
* @param by
* @param waitTimes
* @return
*/
public static boolean whetherElementVisable(final By by, int waitTimes) {
for (int attempt = 0; attempt < waitTimes; attempt++) {
try {
return true;
} catch (NoSuchElementException e) {
if (attempt == waitTimes - 1) {
return false;
}
}
}
return false;
}
}
调用
//如果有协议弹窗,则点击同意
if (Chazhaoyuansu.whetherElementVisable(By.id("com.cmcc.p.poc:id/tv_title"), 1)) {
//点击同意
androidDriver.findElementById("com.cmcc.p.poc:id/tv_confirm").click();
}else {
//点击不同意
androidDriver.findElementById("com.cmcc.p.poc:id/tv_cancel").click();
}
场景二、
一个页面会弹出多个弹窗,且取消按钮是同一个元素, 我们就可以查找这个元素,并 点击此元素
封装方法
使用方法
/**
* android.findElement如果找不到元素直接报错不会弹出错误所以需要封装返回正确和错误
* 查到元素返回true 找不到返回false
* @param by
* @return
*/
public boolean byElementIsExist(By by) {
try {
logger.info("查找元素中"+by+"请稍等......");
android.findElement(by);
return true;
} catch (Exception e) {
// TODO: handle exception
return false;
}
}
/**
* 群组对讲页面弹窗检测叉号元素,检测到后点击叉号
* 最多查找次数自己传,查不到就跳出循环,继续执行下面的代码
* @throws InterruptedException
*/
public void tanchuanjiance(final String id,int shuzi) {
for (int i = 0; i < shuzi; i++) {
if (byElementIsExist(By.id(id))==true) {
//点击同意
clickyuansu(id);
//clickElement("群组对讲tab", "窗口弹框图层叉号");
logger.info("第:"+i+"关闭弹框叉号 -成功");
}else {
//点击不同意
logger.info("第:"+i+"关闭弹框叉号 -没有找到所以跳出循环");
break;
}
//return;
}
return;
}