Android UI 验证

android_ui_verification
分类编程
作者Agentic Awesome Skills 社区
许可MIT
评分4.80/5
使用2.3K

Android UI 验证技能

本技能提供了一套系统化的方法,用于通过 ADB 命令在 Android 模拟器上测试 React Native 应用程序。它支持自主交互、状态验证以及视觉回归检查。

使用场景

  • 验证 React Native 或原生 Android 应用的 UI 变更。
  • 自主调试布局问题或交互 Bug。
  • 在手动测试效率较低时,确保功能正常运行。
  • 为 PR 文档自动截取屏幕截图。

🛠 前置条件

  • Android 模拟器正在运行。
  • 已安装 adb 并将其添加到 PATH 环境变量中。
  • 应用程序处于调试模式以访问 logcat。

🚀 工作流

1. 设备校准

在交互前,务必验证屏幕分辨率以确保点击坐标准确。
bash
adb shell wm size
*注:布局通常会缩放。请使用返回的物理尺寸作为坐标计算的基准。*

2. UI 检查(状态发现)

使用 uiautomator dump 来查找 UI 元素(按钮、输入框)的精确边界。
bash
adb shell uiautomator dump /sdcard/view.xml && adb pull /sdcard/view.xml ./artifacts/view.xml
view.xml 中搜索 textcontent-descresource-idbounds 属性 [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 失败或未找到预期文本,应立即停止并排查问题,而非盲目点击。

局限性

  • 仅在任务明确符合上述范围时使用此技能。
  • 不要将输出结果视为环境特定验证、测试或专家评审的替代方案。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。