Appium自动化测试安卓平台总体架构图:

注意点
以下注意点面向 Appium3.7
Nodejs版本
大于20.19,小于等于22.x
npm > 10

安卓机Hidden API机制
- 安卓 9 引入谷歌原生机制,区分公开 SDK 与系统内部隐藏接口;uiautomator2‑server 做控件抓取大量依赖隐藏接口。
hidden_api_policy:系统全局设置,控制 ART 虚拟机拦截隐藏接口的松紧。 - Appium 三条 shell 命令
settings delete global hidden_api_policy_pre_p_apps
settings delete global hidden_api_policy_p_apps
settings delete global hidden_api_policy
目的:adb 修改全局系统配置,整机放开 hidden‑api 拦截。
- Android9:普通 adb 有权限,可以生效。
- Android10 + 非 root:普通 adb 没有
WRITE_SECURE_SETTINGS权限,命令必然报权限拒绝,exit code=255。 - 部分厂商手机有额外安全层,再次拦截 adb 操作,无系统开关关闭。
关于忽略这个报错:ignoreHiddenApiPolicyError
- 仅忽略新建 session 阶段上述 3 条 adb 命令执行失败报错,打印警告,不终止 session。
- 不会修改系统配置,不会解除 hidden‑api 限制,不给 uia2 增加权限。
- 配置方式:
- Python 客户端:必须
options.set_capability("appium:ignoreHiddenApiPolicyError", True);直接赋值对象属性不会下发 cap,直接失效。 skip_device_initialization = False;开启该参数,整套初始化逻辑直接跳过,cap 完全无效。
- Python 客户端:必须
两个Appium的配置参数说明
skip_server_installation=true:跳过 uiautomator2‑server、test 两个 apk 的 adb 安装与版本校验;手机上 apk 版本必须和电脑驱动版本严格匹配;和 hidden‑api 逻辑无关。skip_device_initialization=true:跳过 Appium Settings 安装、执行 hidden‑api 策略 shell 命令;会直接不执行 relaxHiddenApiPolicy 逻辑;普通真机调试不要开启,仅用于预部署完成的批量压测。
Appium Inspector 说明
Appium Inspector:独立 GUI 客户端工具,不是 Appium Server、不是驱动,等价于你的 Python/JS 自动化脚本,只是图形化版本的 Appium 客户端GitHub。
工作链路:Inspector (客户端) → http 请求 → Appium Server → UiAutomator2 驱动 → Android 真机 / 模拟器。 它本身不直接操作手机,完全依赖 Appium 服务与驱动。
核心用途
- 可视化抓取屏幕截图、完整 UI 控件树(pageSource),查看控件全部属性:resource‑id、text、content‑desc、bounds、className 等CSDN博...。
- 点击截图上控件,自动生成多种定位表达式:xpath、accessibilityId、resourceId,直接复制用于自动化脚本。
- 简易调试:在工具内直接执行点击、输入、滑动、获取元素,不用写代码,验证定位是否有效。
- 录制模式:把你在界面上的操作,直接输出各语言示例代码片段。
- 支持附加到已有会话(attach to session):复用已经跑起来的自动化会话,不用重新初始化设备,直接看当前页面元素。
注意:有时候界面会卡住,多用顶部的刷新按钮。。。


被折叠的 条评论
为什么被折叠?



