用自然语言操控手机:ARTEMIS Android 自动化实战

52 次阅读 0 点赞 0 评论 7 分钟原创技术教程

本文带你从零搭建 ARTEMIS 环境,掌握用自然语言驱动 Android 设备完成跨应用操作,并将该能力集成到 Python 自动化测试脚本中。学完后,你将摆脱繁琐的 Appium 脚本编写,用一句话搞定手机自动化测试。

#Android自动化 #AI工具 #Python测试 #MCP #自然语言编程
用自然语言操控手机:ARTEMIS Android 自动化实战

用自然语言操控手机:ARTEMIS Android 自动化实战

做 Android 开发或测试的同学一定经历过这种场景:写了一版 APK 想快速验证某个流程——打开应用、登录、点几个按钮、截图对比。传统方案要么手写 Appium 脚本,要么自己录 UI 交互,光环境搭建就已经耗掉半天。

能不能像跟同事说话一样告诉电脑「帮我打开设置,看看电池电量,截个图回来」,然后它自己就把这事办了?

这就是今天要带你动手实践的 Google 开源项目——ARTEMIS。它能把自然语言指令转成可靠的 Android 设备操作,在 Google 自家的 AndroidWorld 基准测试中跑出了 99%+ 的任务完成率。本文将带你从零搭建环境、跑通第一个自然语言指令,最后写一段 Python 脚本把这个能力集成到测试流程里。


一、前置条件

条件 说明
Python 3.12+ ARTEMIS 基于 Python 开发,低于 3.12 可能遇到依赖问题
一台 Android 设备或模拟器 真机需开启 USB 调试;模拟器推荐 Android Studio 自带的 AVD
操作系统 macOS / Linux / Windows 均可
基础知识 会用终端、了解基本 Git 操作即可

USB 调试是必须的。ARTEMIS 底层通过 ADB 与手机通信,不打开 USB 调试就无法操作屏幕。真机在「设置 → 开发者选项」中开启即可,模拟器默认已开。


二、安装与快速上手

步骤 1:克隆并启动

ARTEMIS 提供了一键启动脚本,会自动安装 ADB、scrcpy、FFmpeg 等系统工具链:

macOS / Linux:

bash 复制代码
git clone https://github.com/google/artemis.git && cd artemis
./start.sh

Windows PowerShell:

powershell 复制代码
git clone https://github.com/google/artemis.git
cd artemis
.\start.bat

注意 Windows 的一个坑: PowerShell 默认不会在当前目录搜索可执行脚本,必须写 .\start.bat(带反斜杠前缀)。直接敲 start.bat 可能报找不到命令。

脚本运行后会自动检测并安装依赖。uv 是 ARTEMIS 使用的 Python 包管理器,比 pip 快很多,系统中没有会自动装上。

步骤 2:确认连接

启动成功后,浏览器打开 http://localhost:8000 即可看到 Web 控制台,包含实时投屏和指令输入框。终端跑一条命令测试连接:

bash 复制代码
uv run artemis run "打开设置,找到电池选项并告诉我当前电量" --profile flash

--profile flash 表示快速模式,每步操作约 3-5 秒,适合明确的确定性操作。


三、实战:自然语言驱动完整流程

让 ARTEMIS 自动完成一个跨应用操作:先在 Google Maps 中设置导航路线,然后去 YouTube 播放一首歌。

方式一:CLI 终端直接跑

bash 复制代码
uv run artemis run "在 Google Maps 中设置驾车路线并计算总时长,然后打开 YouTube 播放一首 Coldplay 的歌" --profile flash

ARTEMIS 会自动识别屏幕、定位元素、执行点击和输入。Web 控制台实时展示每一步操作——感知内容、坐标位置、执行动作,一目了然。

方式二:用 Python SDK 集成到脚本

python 复制代码
import asyncio
from artemis_client import ArtemisClient


async def main():
    client = ArtemisClient(
        "http://artemis-host:8000",
        device_serial="emulator-5554",
        default_profile="flash",
    )

    result = await client.run(
        "打开系统设置,进入电池页面,确认电量百分比已显示,并检查是否有崩溃弹窗。"
    )

    assert result.succeeded, f"测试失败: {result.error or result.status}"
    print(f"✅ 测试通过!设备: {result.device_serial}")


if __name__ == "__main__":
    asyncio.run(main())

先安装 SDK:

bash 复制代码
uv add "artemis-client @ git+https://github.com/google/artemis.git#subdirectory=packages/artemis-client"

ARTEMIS 的服务端运行在设备端处理 ADB、截图和元素识别,SDK 是零运行依赖的轻量客户端。这种架构让测试脚本可以跑在任何能访问 ARTEMIS 服务地址的地方。


四、进阶:在 AI IDE 中直接操控手机

使用 Claude Code、Cursor 等 AI 编程助手时,ARTEMIS 原生支持 MCP(Model Context Protocol),可以让 AI 直接驱动你的设备。

安装 MCP:

bash 复制代码
uv run artemis mcp --install all

安装完成后,在 IDE 聊天框输入:

"编译最新代码成 APK,安装到连接的设备上,用测试账号打开登录页面,检查异常弹窗,返回最终页面截图。"

AI 会把指令交给 ARTEMIS 执行并返回结果,大幅缩短 bug 复现和 UI 验证链路。


五、常见问题

1. ADB 连接不上设备

  • 真机:确认开启「USB 调试」和「文件传输/MTP 模式」
  • 模拟器:确认 AVD 已启动且在 adb devices 列表中可见
  • 运行 adb devices 确认设备已枚举

2. Flash 模式 vs Pro 模式

  • Flash:每步 3-5 秒,单模型响应式循环,适合日常明确操作
  • Pro:每步 15-40 秒,多智能体协作(规划→执行→验证),适合 100+ 步长流程和稳定性压测

日常自动化跑 Flash,正式测试用例跑 Pro。

3. Artemis Accessibility Helper 是什么

首次运行时,ARTEMIS 会在手机安装辅助功能服务用于读取屏幕布局信息。它只在本地运行,不会上传数据。不想自动安装可在 .env 设置 ARTEMIS_HELPER_AUTO_INSTALL=false。

4. 让 artemis 命令全局可用

bash 复制代码
uv tool install -e .

执行后不用每次都加 uv run 前缀。


六、下一步

完成环境搭建、自然语言指令执行和 Python SDK 集成后,可以继续探索:

  1. 将 ARTEMIS 集成到 CI/CD 流水线,每次发版自动跑 UI 冒烟测试
  2. 用 Pro 模式编写带验证点和最终报告的端到端测试用例
  3. 结合 pytest 框架,把 client.run() 封装成可复用的测试 fixture

项目地址:github.com/google/artemis

最后更新:2026-10-17T10:02:03

评论 (0)

发表评论

blog.comments.form.loading
0/500

暂无评论,快来发表第一条评论吧!