用途:在 Android 模拟器上对 React Native 或原生 Android 应用进行自动化端到端 UI 测试与验证,通过 ADB 实现自主交互、状态验证和视觉回归检查。适用场景包括验证 UI 变更、自主调试布局或交互缺陷、在手动测试过慢时确认功能,以及为 PR 文档自动截图。
前提条件:模拟器已运行;adb 已安装并加入 PATH;应用处于 debug 模式以便访问 logcat。
工作流程:
- 设备校准:交互前用 adb shell wm size 确认屏幕分辨率,布局常被缩放,应以返回的物理尺寸为坐标计算基准。
- UI 检查:用 adb shell uiautomator dump /sdcard/view.xml && adb pull /sdcard/view.xml ./artifacts/view.xml 获取元素边界,在 view.xml 中查找 text、content-desc 或 resource-id,bounds 属性 [x1,y1][x2,y2] 定义可点击区域。
- 交互命令:点击 adb shell input tap <x> <y>(取元素边界中心);滑动 adb shell input swipe <x1> <y1> <x2> <y2> <duration_ms>;文本输入 adb shell input text "<message>"(对特殊字符支持有限);按键 adb shell input keyevent <code_id>(如 66 表示 Enter)。
- 验证与报告:视觉验证用 adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png ./artifacts/test_result.png;分析验证用 adb logcat -d | grep "ReactNativeJS" | tail -n 20 实时监控 JS 控制台日志。生成文件应统一放入 artifacts/ 文件夹。
最佳实践:交互与验证之间加入短暂等待(如 1-2 秒)以等待动画;点击取边界算术平均值最可靠;在代码中使用独特日志标记(如 ✅ Action Successful)便于 grep 验证;若 uiautomator dump 失败或找不到预期文本,应停止排查而非盲目点击。
限制:仅在任务明确匹配上述范围时使用;输出不能替代特定环境的验证、测试或专家审查;若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。