告别手动操作:UI-TARS让Android自动化测试像搭积木一样简单
你还在为重复的Android应用测试感到头疼吗?还在为编写复杂的自动化脚本而烦恼?本文将带你快速掌握UI-TARS的移动应用自动化能力,无需编程基础也能轻松实现Android应用的自动化操作,让你从此告别繁琐的手动测试,效率提升10倍!
读完本文,你将学会:
- 如何快速搭建UI-TARS移动自动化环境
- 使用MOBILE_USE模板创建自动化任务
- 解析模型输出并生成可执行的自动化脚本
- 实战演示:自动完成Android应用的登录流程
- 常见问题解决与高级技巧
什么是UI-TARS?
UI-TARS是一个开源的多模态智能体,基于强大的视觉语言模型构建,能够在虚拟环境中执行各种任务。特别是在移动应用自动化方面,UI-TARS表现出色,在Android World benchmark上达到了64.2的高分,远超之前的SOTA模型。
UI-TARS-1.5版本通过强化学习增强了推理能力,能够在采取行动前进行思考推理,显著提高了性能和适应性。其核心优势在于能够理解GUI界面并生成相应的操作指令,实现真正的端到端自动化。
环境准备:5分钟上手
安装UI-TARS Python包
UI-TARS提供了便捷的Python包,只需一行命令即可完成安装:
pip install ui-tars
# 或使用uv加速安装
uv pip install ui-tars
准备Android测试环境
- 安装Android Studio并配置SDK
- 启动Android模拟器或连接真实设备
- 确保adb调试已启用
详细的部署指南可参考官方部署文档。
MOBILE_USE模板:专为移动自动化设计
UI-TARS提供了三种提示模板,其中MOBILE_USE专为移动设备或Android模拟器设计,包含了移动特有的操作指令。
MOBILE_USE主要特性
- 支持移动特有操作:
long_press(长按)、open_app(打开应用)、press_home(Home键)、press_back(返回键) - 优化的坐标系统,适配移动设备屏幕
- 支持滑动、输入、导航等常见移动操作
模板定义位于codes/ui_tars/prompt.py文件中,你可以根据需要进行自定义修改。
实战演示:自动登录Android应用
下面我们通过一个实际案例来演示如何使用UI-TARS实现Android应用的自动登录。
步骤1:准备测试用例
首先,我们需要准备一个包含测试步骤的消息文件。项目中提供了示例文件data/test_messages.json,你可以参考其格式创建自己的测试用例。
步骤2:使用MOBILE_USE模板调用模型
from ui_tars.prompt import get_prompt_template
# 获取MOBILE_USE模板
prompt_template = get_prompt_template("MOBILE_USE")
# 构建测试指令
test_instruction = """
任务:自动登录"示例应用"
步骤:
1. 打开应用
2. 输入用户名:testuser
3. 输入密码:testpass
4. 点击登录按钮
"""
# 生成完整提示
prompt = prompt_template.format(instruction=test_instruction)
步骤3:解析模型输出
模型输出包含思考过程和动作指令,我们需要使用action_parser模块将其解析为结构化数据:
from ui_tars.action_parser import parse_action_to_structure_output
# 假设response是模型返回的字符串
response = """Thought: 我需要先打开应用...
Action: open_app(package_name='com.example.app')
Thought: 现在需要输入用户名...
Action: click(start_box='(300, 400)')
Action: type(text='testuser')
..."""
# 解析响应
original_image_width, original_image_height = 1080, 1920 # 根据设备分辨率调整
parsed_dict = parse_action_to_structure_output(
response,
factor=1000,
origin_resized_height=original_image_height,
origin_resized_width=original_image_width,
model_type="qwen25vl"
)
步骤4:生成自动化脚本
解析后的结构化数据可以直接转换为pyautogui脚本:
from ui_tars.action_parser import parsing_response_to_pyautogui_code
# 生成pyautogui代码
pyautogui_code = parsing_response_to_pyautogui_code(
responses=parsed_dict,
image_height=original_image_height,
image_width=original_image_width
)
print(pyautogui_code)
生成的代码将包含完整的自动化步骤,可直接执行或保存为.py文件。
坐标可视化
为了帮助理解坐标处理过程,UI-TARS提供了坐标可视化工具。你可以通过以下代码将模型识别的坐标点绘制在截图上:
from PIL import Image, ImageDraw
import numpy as np
import matplotlib.pyplot as plt
# 加载截图
image = Image.open("screenshot.png")
# 获取解析后的坐标
start_box = parsed_dict[0]["action_inputs"]["start_box"]
coordinates = eval(start_box)
x1 = int(coordinates[0] * original_image_width)
y1 = int(coordinates[1] * original_image_height)
# 绘制坐标点
draw = ImageDraw.Draw(image)
radius = 5
draw.ellipse((x1 - radius, y1 - radius, x1 + radius, y1 + radius), fill="red", outline="red")
# 显示结果
plt.imshow(np.array(image))
plt.axis("off")
plt.show()
更详细的坐标处理指南可参考坐标处理说明。
性能对比:UI-TARS vs 传统自动化工具
UI-TARS相比传统的自动化工具(如Appium、Espresso)有哪些优势?让我们通过数据来直观感受:
| 评估指标 | UI-TARS | Appium | Espresso |
|---|---|---|---|
| 学习曲线 | 低(无需编程) | 中 | 高 |
| 界面变化适应性 | 高(视觉理解) | 低(依赖元素ID) | 低(依赖元素ID) |
| 跨应用兼容性 | 高 | 中 | 低 |
| 非标准控件支持 | 高 | 低 | 低 |
| 部署复杂度 | 低 | 中 | 高 |
UI-TARS在Android World benchmark上的表现也证明了其强大的能力:
常见问题与解决方案
Q: 如何处理不同分辨率的设备?
A: UI-TARS会自动处理坐标缩放,只需在解析时提供原始图像的宽高即可:
parsed_dict = parse_action_to_structure_output(
response,
factor=1000,
origin_resized_height=1920, # 原始图像高度
origin_resized_width=1080, # 原始图像宽度
model_type="qwen25vl"
)
Q: 模型无法识别某些UI元素怎么办?
A: 可以尝试以下方法:
- 提供更高质量的截图
- 在提示中更详细地描述元素位置和外观
- 使用
GROUNDING模板专门优化元素定位
Q: 如何提高自动化脚本的稳定性?
A: 建议:
- 在关键步骤之间添加适当的延迟
- 增加错误检查和重试机制
- 使用更具体的指令描述
总结与展望
UI-TARS为Android应用自动化提供了一种全新的方式,通过视觉理解和自然语言指令,大大降低了自动化测试的门槛。无论是普通用户还是测试工程师,都能快速上手并创建复杂的自动化任务。
随着UI-TARS-2的发布,我们可以期待更多令人兴奋的功能,如增强的GUI理解能力、游戏自动化、代码生成和工具使用等。UI-TARS正朝着"全能智能体"的方向发展,为复杂任务提供无缝的多能力集成。
如果你觉得本文对你有帮助,请点赞、收藏并关注我们,以便获取最新的UI-TARS使用技巧和最佳实践!下期我们将介绍如何使用UI-TARS实现移动应用的自动化测试报告生成,敬请期待!
参考资料
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0188- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
snackjson新一代高性能 Jsonpath 框架。同时兼容 `jayway.jsonpath` 和 IETF JSONPath (RFC 9535) 标准规范(支持开放式定制)。Java00

