Appium 曲径通幽,简述用 appium 搞定权限弹框的一个小办法 (appium 操作权限提示)

yuge · 2018年03月26日 · 最后由 雨夜狂奔 回复于 2018年05月08日 · 2429 次阅读

本来想开头多说点什么的,不知道说什么好,直入正题吧!
appium 自动化时,安卓平台用真机跑时,特别多烦人的权限提示,虽说处理起来也没什么难度,一两个 if else 搞定。但是,玩的时间长了就会发现,这个 if else 有点吓人,先判断机型,再判断是点击 id 找的允许好,还是 uiautomator 找的确认控件好,反正什么办法都不觉得有什么靠谱的,烦人。
今天无聊的时候试了一下 xpath 的 contains 方法,突然发现这个允许按钮貌似都有一个共性,那就是都是 “允许” 二字。
你想的对,基本都有允许二字,目前我手上的手机:三星、小米、oppo、华为,权限提示出来都有允许二字。
相信 testerhome 里各位都是大神,都知道我在说什么了,甚至已经有人这么做了,但是还是写写我封装的方法,小白备用:

    public void permission() {
    for (int i=0; i <= 10; i++) {
        if (getPageSource().contains("允许") || getPageSource().contains("禁止")
                || getPageSource().contains("授权")) {// 出现权限提示
            try {
                findElement(By.xpath("//android.widget.Button[contains(@text,'允许')]")).click();// 点击允许
            } catch (NoSuchElementException e1) {
                findElement(By.xpath("//android.widget.Button[contains(@text,'授权')]")).click();// 点击授权
            }
        } else {
            break;
        }
    }
}

这里的关键就是用 contains(@text,'允许') 的方式找到这个允许按钮
好吧,low 逼的代码,欢迎抛砖!

共收到 4 条回复 时间 点赞

我现在是这么处理 APP 系统授权弹框的,思路基本一样。

// 自动处理应用首次启动系统授权
UIBean systemPopUpBox = new UIBean(by.NAME, "始终允许", "系统授权弹框");
while (appiumUtil.isElementExist(systemPopUpBox)) {
    try {
        appiumUtil.clickBean(systemPopUpBox);
    } catch (Exception e) {
        logger.error("自动点击app应用系统授权框出错!" + e.getMessage());
    }
}
KD 回复

大佬,上面这些类,需要什么包啊,我这一直报错

突然发现这个允许按钮貌似都有一个共性,那就是都是“允许”二字

这个有点想当然了,就我看到的含允许的能覆盖到 50%?

还有好多不定时弹窗的,这种好像不太好处理,每次操作都去检测又会不会太慢了😆

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册