版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jasonliujintao/article/details/80409892
robotframework 安卓权限问题
- 在使用rf + appium 做UI 自动化的时候,总是会遇到请求权限的弹框
- 而且各个机型上的弹窗,可能还不相同,这就比较坑了
- 机型那么多,不可能每个机型都去做一下兼容
- 所以就上网找了各种方法,最终使用: adb shell pm grant xxx.xxx.package xxx.xxx.permission 的方法
- 下面就介绍一下,怎样查找 apk 中的权限,和使用命令来赋予权限。
查找权限:
需要 aapt 这个工具,如果没有请自行到网上下载,和 adb.exe 放到同一个目录下。
aapt d permissions E:\app-debug.apk
这里你就可以看到,apk 中配置的用户所有的权限
OK , 那么下一步是怎样使用 rf 执行,授权的命令。
在Ride 中设置一个,permission 的List 变量
然后创建一个关键字: 赋予权限
主要使用了 Run process 这个关键字, 需要导入 Process 库
如果你手机上还没有安装APK, 那么也可以使用 Run Process 运行 adb 命令安装。
PS: Run Process 关键字是会等待 adb 命令运行完成的
不过这里有点坑,直接用 Run Process 执行 adb install 是会一直卡住的,所以就迂回了一下。
把 adb install package 写到一个bat 脚本中~
install.bat
@echo off
adb install -r %1
exit
然后是使用autoit 的 run 命令运行, 运行之后等待安装成功~
run ${CURDIR}/install.bat ${CURDIR}/app/app-debug.apk
:FOR ${i} IN RANGE 60
sleep 0.5
${result} Run Process adb shell pm list packages -3|grep package:${package}
${flag} evaluate """${result.stdout}""".find("${package}")>0
run keyword if ${flag} exit for loop
执行脚本之后,就循环 60次,每次等待 0.5s , 直到检查到包名存在
安装之后,我们需要检查一下,是否安装成功~
主要是利用 adb shell pm list packages -3|grep xxxx #注意这里是 grep , 而不是在 cmd 窗口需要用 findstr
卸载应用的也贴一下~
最后让我们组装成case~
来运行一下~
没毛病,看来可以正常安装
接下来就是,手动打开 app 去验证一下, 还有没有权限的弹框~
额~, 折腾到最后,才发现有这个命令
可以赋予所有运行时权限,而且有的手机上,还是会有询问权限的弹窗。。。
adb install -g test.apk
app installation:
install [-lrtsdg] PACKAGE
install-multiple [-lrtsdpg] PACKAGE...
push package(s) to the device and install them
-l: forward lock application
-r: replace existing application
-t: allow test packages
-s: install application on sdcard
-d: allow version code downgrade (debuggable packages only)
-p: partial application install (install-multiple only)
-g: grant all runtime permissions