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

cmlanche · April 11, 2019 · Last by 海姆达尔 replied at April 18, 2019 · 2757 hits

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

顺便 at 下 @seveniruby 求教大神 😊

附言 1  ·  April 17, 2019

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

  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

cmlanche #12 · April 15, 2019 Author
XufeiLi 回复

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

cmlanche #13 · April 15, 2019 Author
XufeiLi 回复

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

cmlanche 回复

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

cmlanche 回复

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

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

cmlanche #17 · April 17, 2019 Author
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 分析还好一点 就是慢

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up