本来想开头多说点什么的,不知道说什么好,直入正题吧!
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 逼的代码,欢迎抛砖!


↙↙↙阅读原文可查看相关链接,并与作者交流