关于 android-emulator-qa
供 QA 团队和开发者在模拟器中使用 adb 测试 Android 应用流程的技能,结合基于 UI 树的交互与截图、日志采集。
主要功能
- 01使用 adb 启动和控制应用
- 02检查 UI 树并计算点击坐标
- 03采集截图和 logcat 输出
- 04使用脚本汇总 UI 树
适用场景
- 01在模拟器中复现导航或界面问题
- 02验证 Android 功能流程
- 03在 QA 测试时保存截图和日志
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ openai/ plugins --skill android-emulator-qa安装后在 Claude Code 中输入/android-emulator-qa确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSE.txtagents/openai.yamlscripts/ui_pick.pyui_tree_summarize.py详细介绍
Android Emulator QA
在模拟器中使用 adb 启动应用、输入内容、检查 UI 树、截取屏幕截图和查看日志,以验证 Android 应用流程。
适用场景
- 在 Android 模拟器中测试功能流程。
- 通过 adb 输入事件驱动导航,重现 UI 错误。
- 测试时截取屏幕截图并收集 logcat 输出。
快速开始
- 列出模拟器并选择一个序列号:
adb devices
- 构建并安装目标变体:
./gradlew :<module>:install<BuildVariant> --console=plain --quiet- 如果不确定任务名称:
./gradlew tasks --all | rg install
- 启动应用:
- 解析 activity:
adb -s <serial> shell cmd package resolve-activity --brief <package> - 启动应用:
adb -s <serial> shell am start -n <package>/<activity>
- 解析 activity:
- 截取屏幕截图以进行视觉验证:
adb -s <serial> exec-out screencap -p > /tmp/emu.png
adb 控制命令
- 点击(使用从 UI 树获取的坐标):
adb -s <serial> shell input tap <x> <y>
- 滑动:
adb -s <serial> shell input swipe <x1> <y1> <x2> <y2>- 避开屏幕边缘(起点距左侧或右侧约 150-200 px),以减少意外触发返回手势。
- 输入文本:
adb -s <serial> shell input text "hello"
- 返回:
adb -s <serial> shell input keyevent 4
- 转储 UI 树:
adb -s <serial> exec-out uiautomator dump /dev/tty
选择坐标(仅使用 UI 树)
始终根据 UI 树计算点击坐标,不要使用屏幕截图。
- 将 UI 树转储到针对当前步骤的文件:
adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-settings.xml
- 查找目标节点,并根据边界框计算中心坐标(
x y):- 边界框格式:
bounds="[x1,y1][x2,y2]" - 辅助脚本:
python3 <path-to-skill>/scripts/ui_pick.py /tmp/ui-settings.xml "Settings"
- 边界框格式:
- 如果找不到节点且存在
scrollable元素:- 滑动、重新转储,并再次搜索;在判定目标不存在之前,至少重试一次。
- 点击中心位置:
adb -s <serial> shell input tap <x> <y>
UI 树结构(辅助工具)
使用此辅助工具,在检查完整 XML 之前生成简洁易读的概览。
- 转储完整 UI 树:
adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-full.xml
- 生成摘要:
python3 <path-to-skill>/scripts/ui_tree_summarize.py /tmp/ui-full.xml /tmp/ui-summary.txt
- 查看
/tmp/ui-summary.txt以选择可能的目标,然后从完整 XML 中计算精确边界。
日志(logcat)
- 清除日志:
adb -s <serial> logcat -c
- 实时查看应用进程日志:
- 解析 pid:
adb -s <serial> shell pidof -s <package> - 实时查看:
adb -s <serial> logcat --pid <pid>
- 解析 pid:
- 仅查看崩溃缓冲区:
adb -s <serial> logcat -b crash
- 保存日志:
adb -s <serial> logcat -d > /tmp/logcat.txt
软件包快捷命令
- 列出已安装的软件包:
adb -s <serial> shell pm list packages
- 筛选当前命名空间:
adb -s <serial> shell pm list packages | rg <company_or_app_id>
- 启动前确认 activity 可以解析:
adb -s <serial> shell cmd package resolve-activity --brief <package>
评论
支持 Markdown