如何使用Appium切换Android设备上的不同用户账号
需求可行性说明
该需求完全可以实现。Android原生系统提供了多用户管理能力,Appium可通过调用系统adb指令完成已添加用户的切换,配合多用户下的应用启动配置,即可完成不同用户场景下的自动化测试。
前置准备
- 提前在Android设备上添加所有需要测试的目标用户,完成每个用户的初始配置(包括允许未知来源应用安装、开启对应权限等),并在每个用户下提前安装好待测试的应用,完成测试前置的权限授权操作
- 开启设备的USB调试权限,同时开启「USB调试(安全设置)」权限(允许通过USB调试修改系统设置、模拟点击)
- 使用Appium 1.20.0+版本搭配UIAutomator2 20.0.0+驱动,对多用户切换的兼容性更好
具体操作步骤
1. 获取设备已存在的用户ID
执行adb命令获取所有用户的ID信息:adb shell pm list users
命令输出格式示例:UserInfo{0:机主:13} running,其中大括号内的第一个数字即为用户ID,通常机主用户ID为0,后续新增用户ID从10开始依次递增,提前记录每个测试用户对应的ID。
2. 执行用户切换操作
切换用户的核心adb命令为:adb shell am switch-user <目标用户ID>
例如切换到ID为10的用户,对应命令为adb shell am switch-user 10。
在Appium脚本中可直接通过内置的shell调用能力执行该命令,以下为Python版本的示例代码:
# 通过Appium驱动执行切换用户命令 driver.execute_script('mobile: shell', { 'command': 'am', 'args': ['switch-user', '10'] }) # 等待系统桌面加载完成,建议等待3~5秒 time.sleep(5)
3. 目标用户下启动应用
切换完成后,在当前用户下启动应用有两种实现方式:
- 直接在当前会话中调用启动应用的API,默认会在当前活跃用户下打开应用
- 如果需要指定用户启动,可在Appium的capabilities中添加如下配置:
'optionalIntentArguments': '--user <目标用户ID>'
注意事项
- Android多用户的应用数据完全隔离,切换用户后无需清理上一个用户的应用缓存,即可直接执行测试用例
- 部分设备切换用户后会自动锁屏,切换完成后需先执行解锁操作,再进行后续的元素定位和操作,避免用例执行失败
- 不要在自动化测试流程中动态创建/删除用户,该操作需要更高的系统权限,且容易造成系统异常,建议提前配置好所有测试用户
内容的提问来源于stack exchange,提问作者Nachiket Pawar
相关产品推荐
相关产品推荐

