mcpField
A
android-emulator-qa

android-emulator-qa

github.com/openai测试与质量7.6k312 次安装3 周前更新
代码仓库

关于 android-emulator-qa

供 QA 团队和开发者在模拟器中使用 adb 测试 Android 应用流程的技能,结合基于 UI 树的交互与截图、日志采集。

主要功能

  1. 01使用 adb 启动和控制应用
  2. 02检查 UI 树并计算点击坐标
  3. 03采集截图和 logcat 输出
  4. 04使用脚本汇总 UI 树

适用场景

  1. 01在模拟器中复现导航或界面问题
  2. 02验证 Android 功能流程
  3. 03在 QA 测试时保存截图和日志

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/openai/plugins --skill android-emulator-qa

安装后在 Claude Code 中输入/android-emulator-qa确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE.txt
agents/
openai.yaml
scripts/
ui_pick.py
ui_tree_summarize.py

详细介绍

Android Emulator QA

在模拟器中使用 adb 启动应用、输入内容、检查 UI 树、截取屏幕截图和查看日志,以验证 Android 应用流程。

适用场景

  • 在 Android 模拟器中测试功能流程。
  • 通过 adb 输入事件驱动导航,重现 UI 错误。
  • 测试时截取屏幕截图并收集 logcat 输出。

快速开始

  1. 列出模拟器并选择一个序列号:
    • adb devices
  2. 构建并安装目标变体:
    • ./gradlew :<module>:install<BuildVariant> --console=plain --quiet
    • 如果不确定任务名称:./gradlew tasks --all | rg install
  3. 启动应用:
    • 解析 activity:adb -s <serial> shell cmd package resolve-activity --brief <package>
    • 启动应用:adb -s <serial> shell am start -n <package>/<activity>
  4. 截取屏幕截图以进行视觉验证:
    • 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 树计算点击坐标,不要使用屏幕截图。

  1. 将 UI 树转储到针对当前步骤的文件:
    • adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-settings.xml
  2. 查找目标节点,并根据边界框计算中心坐标(x y):
    • 边界框格式:bounds="[x1,y1][x2,y2]"
    • 辅助脚本:
    • python3 <path-to-skill>/scripts/ui_pick.py /tmp/ui-settings.xml "Settings"
  3. 如果找不到节点且存在 scrollable 元素:
    • 滑动、重新转储,并再次搜索;在判定目标不存在之前,至少重试一次。
  4. 点击中心位置:
    • adb -s <serial> shell input tap <x> <y>

UI 树结构(辅助工具)

使用此辅助工具,在检查完整 XML 之前生成简洁易读的概览。

  1. 转储完整 UI 树:
    • adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-full.xml
  2. 生成摘要:
    • python3 <path-to-skill>/scripts/ui_tree_summarize.py /tmp/ui-full.xml /tmp/ui-summary.txt
  3. 查看 /tmp/ui-summary.txt 以选择可能的目标,然后从完整 XML 中计算精确边界。

日志(logcat)

  1. 清除日志:
    • adb -s <serial> logcat -c
  2. 实时查看应用进程日志:
    • 解析 pid:adb -s <serial> shell pidof -s <package>
    • 实时查看:adb -s <serial> logcat --pid <pid>
  3. 仅查看崩溃缓冲区:
    • adb -s <serial> logcat -b crash
  4. 保存日志:
    • 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