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

cmlanche · April 11, 2019 · Last by 海姆达尔 replied at April 18, 2019 · 1716 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 作者
XufeiLi 回复

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

cmlanche #13 · April 15, 2019 作者
XufeiLi 回复

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

cmlanche 回复

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

cmlanche 回复

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

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

cmlanche #17 · April 17, 2019 作者
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