Android UI 验证
android_ui_verification
Android UI 验证技能
本技能提供了一套系统化的方法,用于通过 ADB 命令在 Android 模拟器上测试 React Native 应用程序。它支持自主交互、状态验证以及视觉回归检查。
使用场景
- 验证 React Native 或原生 Android 应用的 UI 变更。
- 自主调试布局问题或交互 Bug。
- 在手动测试效率较低时,确保功能正常运行。
- 为 PR 文档自动截取屏幕截图。
🛠 前置条件
- Android 模拟器正在运行。
- 已安装
adb并将其添加到 PATH 环境变量中。
- 应用程序处于调试模式以访问 logcat。
🚀 工作流
1. 设备校准
在交互前,务必验证屏幕分辨率以确保点击坐标准确。bash
adb shell wm size2. UI 检查(状态发现)
使用uiautomator dump 来查找 UI 元素(按钮、输入框)的精确边界。
bash
adb shell uiautomator dump /sdcard/view.xml && adb pull /sdcard/view.xml ./artifacts/view.xmlview.xml 中搜索 text、content-desc 或 resource-id。bounds 属性 [x1,y1][x2,y2] 定义了可点击区域。
3. 交互命令
- 点击 (Tap):
adb shell input tap <x> <y>(使用元素边界的中心点)。
- 滑动 (Swipe):
adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms>(用于滚动)。
- 文本输入 (Text Input):
adb shell input text "<message>"(注:对特殊字符的支持有限)。
- 按键事件 (Key Events):
adb shell input keyevent <code_id>(例如:66 代表 Enter)。
4. 验证与报告
#### 视觉验证 在交互后截屏以确认 UI 变更。bash
adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png ./artifacts/test_result.png#### 分析验证
实时监控 JS 控制台日志以检测错误或确认成功日志。
bash
adb logcat -d | grep "ReactNativeJS" | tail -n 20#### 清理
始终将生成的文件存储在 artifacts/ 文件夹中,以符合项目组织规则。
💡 最佳实践
- 等待动画:在交互和验证之间始终添加短暂的休眠(如 1-2 秒)。
- 中心点击:计算
[x1,y1][x2,y2]的算术平均值,以获得最可靠的点击目标。
- 日志标记:在代码中使用独特的日志消息(如
✅ Action Successful),以便于使用grep进行验证。
- 快速失败:如果
uiautomator dump失败或未找到预期文本,应立即停止并排查问题,而非盲目点击。
局限性
- 仅在任务明确符合上述范围时使用此技能。
- 不要将输出结果视为环境特定验证、测试或专家评审的替代方案。
- 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。