Appium appium 自动化测试,权限框你们都是怎么处理的?

cmlanche · 2019年04月11日 · 最后由 海姆达尔 回复于 2019年04月18日 · 4031 次阅读

不管是 UIAutomator1、还是 UIAutomator2,还是 espresso,在脚本执行之前就要安装很多 apk,如 UIAutomator2 的 apk,Appium Settings APK,还有被测应用 apk,在脚本启动之前,会有很多权限框弹出,不止这样,在 app 测试过程中,还可能会有动态权限申请,也会弹出权限框,。。。。。并且,中途可能会出现系统更新对话框或者其他的,请问下你们都是怎么解决的呢?

顺便 at 下 @seveniruby 求教大神 😊

附言 1  ·  2019年04月17日

具体方法我已经有答案,并且实现了,参考我的专栏:

  1. 知乎专栏:https://zhuanlan.zhihu.com/custom-appium
  2. testerhome 专栏:https://testerhome.com/columns/custom-appium
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 21 条回复 时间 点赞

这个网上有教程可以通过修改 appium 的 js 解决,你百度查一查

小白 回复

我知道修改,就是觉得比较麻烦,我想知道大家都是怎么搞的。
https://testerhome.com/topics/18730

小白 回复

单独修改 js 是不够的

同求,ios 也有这样的困扰

cmlanche 回复

这没干货啊,解决不了问题

我去催饭 回复

当然有了:https://zhuanlan.zhihu.com/custom-appium 看我专栏啊

atx 的 uiautomator2 里面的 watcher 了解下

linpengcheng 回复

watcher 我知道,能力有限

写了个 apk,继承 AccessibilityService,和当时的那些自动抢红包一个原理

adb shell pm grant 包名 android.permission.权限

adb install -r -p

XufeiLi 回复

只能解决部分手机部分权限吧

XufeiLi 回复

测试过程中的动态权限冒出,或者其他系统弹框弹出怎么办?

cmlanche 回复

自动化想兼容更多手机的话,难度很大。建议使用 google 原生系统,比较好控制

cmlanche 回复

我处理是 setUp 处增加高版本动态添加权限

初始时用 adb 点允许不知道可行不,装完 apk 后,用 uiautomator2 里面的 watcher,watcher 挺用的啊,设置好关键字 后,遇到就点,而且点击速度还快

huan 回复

uiautomator2 自己安装时不也弹框吗,怎么办?

。。。我感觉一般都是叫 uiautomator 和 uiautomator2,没人把前者叫作 uiautomator1 的……
这两个库不是一二代的关系。

desired_caps2 = {"deviceName":"860BCMN22FF2",
                "app": app,
                "noReset": True,
                "appWaitPackage": "c.l.a",
                "appWaitActivity":"com.example.TestPlugin.MyActivity",
                "appWaitDuration": 60000,
                "newCommandTimeout": 200,
                "platformVersion": "7.0",
                "autoGrantPermissions": True,
                "platformName": "Android",
                "automationName": "UiAutomator2"
                }


sleep(3)


if __name__ == "__main__":
    # 调用始终允许函数
    print('begin main')

    # performance_service = PermissionServer(desired_caps['deviceName'], False)
    # performance_service.start()

    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    time.sleep(1)
    # performance_service.setPause(1)

if name == "main":
# 调用始终允许函数
print('begin main')

# performance_service = PermissionServer(desired_caps['deviceName'], False)
# performance_service.start()

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(1)
# performance_service.setPause(1)

遇见几个问题:已经 block 了

为什么后安装上的 app, 启动后不长时间就自己杀死进程呢??
发现安装上的 app 和原来的 app 签名文件不一样? 如何解决这个 2 个问题呢???
app 升级到 28 后,必须怎么解决的???

cmlanche 回复

用 adb 处理 uiautomator2 自己安装时的弹框,不知道可行不

huan 回复

是可行的 不过 appium 要升级到 1.10 以上的兼容 2
不过 adb 点击坐标比较不兼容,dump page 分析还好一点 就是慢

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