robotframework appium 安卓权限问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/Jasonliujintao/article/details/80409892