一、前言
二、pm授权与取消授权指令详解
/system/bin
目录下。
grant
(授予应用权限许可)与
revoke
(撤销应用权限),在
Airtest
环境的具体使用如下:
#授予应用权限许可。必需android6.0(API级别23)以上的设备
shell(pm grant <packageName> <permission>)
#撤销应用权限。必需android6.0(API级别23)以上的设备
shell(pm revoke <packageName> <permission>)
指令说明 | 指令 |
---|---|
应用的电话权限 | android.permission.READ_PHONE_STATE |
应用存储的读取权限 | android.permission.READ_EXTERNAL_STORAGE |
应用存储的写入权限 | android.permission.WRITE_EXTERNAL_STORAGE |
应用打开位置权限 | android.permission.ACCESS_COARSE_LOCATION |
应用打开摄像头权限 | android.permission.CAMERA |
应用访问麦克风 | android.permission.RECORD_AUDIO |
应用读取联系人数据 | android.permission.READ_CONTACTS |
应用读取短信数据 | android.permission.READ_SMS |
应用读取设备的日历表 | android.permission.READ_CALENDAR |
应用写入设备的日历表 | android.permission.WRITE_CALENDAR |
#允许应用的电话权限
shell("pm grant com.sina.weibo android.permission.READ_PHONE_STATE")
#撤销应用的电话权限
shell("pm revoke com.sina.weibo android.permission.READ_PHONE_STATE")
#允许应用存储的读写权限
shell("pm grant com.sina.weibo android.permission.READ_EXTERNAL_STORAGE")
shell("pm grant com.sina.weibo android.permission.WRITE_EXTERNAL_STORAGE")
#撤销应用存储的读写权限
shell("pm revoke com.sina.weibo android.permission.READ_EXTERNAL_STORAGE")
shell("pm revoke com.sina.weibo android.permission.WRITE_EXTERNAL_STORAGE")
三、使用案例
# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *
auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
# 定义授予权限的函数
def grant_permit():
#先行允许应用的电话权限
shell("pm grant com.sina.weibo android.permission.READ_PHONE_STATE")
print("已允许应用的电话权限")
#允许应用存储的读写权限
shell("pm grant com.sina.weibo android.permission.READ_EXTERNAL_STORAGE")
shell("pm grant com.sina.weibo android.permission.WRITE_EXTERNAL_STORAGE")
print("已允许应用存储的读写权限")
# 定义撤销权限的函数
def revoke_permit():
#撤销应用的电话权限
shell("pm revoke com.sina.weibo android.permission.READ_PHONE_STATE")
print("已撤销应用的电话权限")
#撤销应用存储的读写权限
shell("pm revoke com.sina.weibo android.permission.READ_EXTERNAL_STORAGE")
shell("pm revoke com.sina.weibo android.permission.WRITE_EXTERNAL_STORAGE")
print("已撤销应用存储的读写权限")
if __name__ == "__main__":
#安装微博app
install("./com.sina.weibo.apk")
#点击确认安装按钮
poco("com.sonymobile.cta:id/btn_ok").wait_for_appearance()
poco(text="确定").click()
#先允许微博的所需权限
grant_permit()
#点击打开微博App
start_app("com.sina.weibo")
#点击开屏的用户隐私确认
poco(text="我知道了").click()
# 检查微博是否成功打开
if exists(Template(r"tpl1725350455008.png", record_pos=(0.001, -0.803), resolution=(1080, 2520))):
print("已成功打开微博")
#关闭微博
stop_app("com.sina.weibo")
#移除微博的所需权限
revoke_permit()
#点击打开微博App
start_app("com.sina.weibo")
sleep(3.0)
# 检查权限申请弹窗是否出现
if exists(Template(r"tpl1725350984228.png", record_pos=(0.001, -0.061), resolution=(1080, 2520))):
print("权限申请弹窗正常跳出")
四、小结
本文分享自微信公众号 - AirtestProject(AirtestProject)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。