SuperAPI AI 工具集

android-cli-ui-automation-skill

测试与质量

查看项目

更新于 10-16 02:05

技能介绍

用途

该技能用于在已连接的 Android 设备或模拟器上自动执行 UI 操作,例如启动应用、点击按钮、输入文本、导航到某个 URL,或驱动界面完成特定任务。整体工作方式是维持一个紧凑的“启动 → 观察 → 操作 → 重新观察”循环,直到目标达成。

启动方式

启动可以分为三种情形:

  1. 在浏览器中打开 URL:

adb -s <serial> shell am start -a android.intent.action.VIEW -d '<url>'

  1. 启动已安装的应用:

adb -s <serial> shell monkey -p <pkg> -c android.intent.category.LAUNCHER 1

  1. 运行 APK 文件:

android run --apks=<path> --device=<serial> [--activity=<name>]

观察方式

优先使用 android layout 获取结构化 UI:

android layout --device=<serial> --pretty --output=/tmp/ui.json

通过 text、content-desc 或 resource-id 匹配目标,并使用节点的中心作为点击坐标。每次操作后都需要用所选模式重新观察;当只需要查看变化时,可以使用 android layout --device=<serial> --diff。

当视觉定位更简单时,使用截图模式。截图模式通常更适合以下情况:WebView 或浏览器页面内容;仅含图标的自定义视图;Canvas、地图或游戏画面;以及布局信息嘈杂、不完整或比图像更难解释的任何界面。

android screen capture --output=/tmp/ui.png --annotate android screen resolve --screenshot=/tmp/ui.png --string="input tap #N"

截图上的标签仅对该张截图有效,每次 UI 变化后都需要重新截图。

操作方式

使用 adb shell input 执行操作:

adb -s <serial> shell input tap <x> <y> adb -s <serial> shell input text '<text-with-%s-for-spaces>' adb -s <serial> shell input swipe <x1> <y1> <x2> <y2> <ms> adb -s <serial> shell input keyevent <KEYCODE>

例如输入带空格的文本:

adb -s <serial> shell input text 'hello%sworld'

规则

每次操作后都必须重新观察,因为坐标和截图标签会立即失效。

先清除阻塞项:权限弹窗、引导页、更新提示。

选择更清晰的观察模式:结构化 UI 用 layout,视觉界面用截图。

注意事项

不要把 URL 输入到地址栏,而应使用 am start -a VIEW -d '<url>' 打开。

如果前台应用不明确,可以用以下命令检查:

adb -s <serial> shell dumpsys window | rg 'mCurrentFocus|mFocusedApp'

多设备处理

如果连接了多台设备,先用 adb devices -l 获取序列号,然后在 android 命令中传 --device=<serial>,在 adb 命令中传 -s <serial>。

限制

当前资料未说明该技能支持的具体 Android 版本、权限要求、异常处理机制、执行成功率或性能表现,这些信息暂未提供。