资讯动态

三条命令跑通 Android 自动化测试:UI-TARS 上手实录

发布时间:2026/9/15 9:48:34 来源:尧图企业网站定制
三条命令跑通 Android 自动化测试UI-TARS 上手实录【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS发版前手动逐页点 App 回归每次都很磨人。UI-TARS 是一个视觉语言模型驱动的 GUI 自动化测试工具给它一张截图和一句自然语言指令它返回一段可直接执行的 pyautogui 脚本。本文带你把指令 → 动作 → 脚本这条链路完整跑通。它是怎么做到的核心思路是把截图当界面描述每一步把当前屏幕截图和任务指令一起交给视觉语言模型模型先输出思考过程Thought再输出一个动作Action——点击、输入文本或滑动。仓库里的ui-tars包负责后半段把 Action 字符串解析成结构化字典把模型坐标还原到原始截图的像素位置再生成可运行的 pyautogui 脚本。相比传统的元素定位方案它不用维护 UI 树界面改版了也不用改代码只需要看截图。数字可以核对Android World 移动端基准得分 64.2此前最好 59.5桌面任务 OSWorld 得分 42.5。 动手前环境准备这里只准备后处理部分模型本体怎么部署在 README_deploy.md 里有完整说明不展开。一共三条命令pip install ui-tars—— 安装解析模型输出、生成脚本的后处理包要求 Python 3.10。python -c import ui_tars—— 验证安装不报错即成功当前版本 0.1.4。pip install pyautogui pyperclip—— 后面生成的脚本依赖这两个一个模拟鼠标键盘一个用来粘贴输入内容。如果只想先看效果可以跳过模型部分直接从 data/test_messages.json 里取一段现成的模型输出跑下一节的解析链路。 跟做一个自动化测试任务的完整执行过程场景固定为在 Android 模拟器上打开社交应用 → 输入用户名密码 → 点登录 → 验证成功。这是移动端动作空间里最小的闭环。输入指令任务描述与提示词模板from ui_tars.prompt import MOBILE_USE_DOUBAO instruction ( 登录社交应用1. 打开应用 2. 在用户名输入框输入 demo_user 3. 在密码输入框输入 secure_password 4. 点击登录按钮 5. 验证登录成功 ) prompt MOBILE_USE_DOUBAO.format(language中文, instructioninstruction)MOBILE_USE_DOUBAO 是移动端专用提示词模板Action Space 已经写在里面click、long_press、type、scroll、open_app、press_home、press_back。上面这段只是把你的任务描述填进模板实际运行时这个 prompt 会连同截图一起发给模型。模型在做什么思考过程与坐标输出模型的返回是固定的两行格式比如它拿到登录页截图后可能返回Thought: 当前在登录页面用户名输入框为空先点击用户名输入框使其获得焦点。 Action: click(start_box(540,320))Thought 部分是模型自言自语检查它有没有理解错任务是调试的第一步。Action 里的坐标是它想点的位置注意这是模型看到的截图尺寸上的坐标要在真实屏幕上点准需要换算回原始截图的坐标系ui-tars包会做这一步。仓库自带可视化脚本跑 codes/tests/inference_test.py 就能看到红点落在真实截图的哪里。图中红点就是模型识别出的点击位置换算后正好落在输入框上。动作输出解析并生成可执行代码from ui_tars.action_parser import ( parse_action_to_structure_output, parsing_response_to_pyautogui_code, ) response Thought: 先点击用户名输入框。\nAction: click(start_box(540,320)) actions parse_action_to_structure_output( response, factor1000, origin_resized_height1080, origin_resized_width1920, model_typeqwen25vl, ) code parsing_response_to_pyautogui_code(actions, image_height1080, image_width1920) print(code)第一个函数把 Action 字符串变成结构化字典坐标同时换算成 0 到 1 的比例第二个函数把比例乘回 1920x1080 屏幕的真实像素输出一行pyautogui.click(x, y, buttonleft)。真实任务里这样循环执行一个动作再截一张图再喂给模型直到模型输出 finished。执行与验证运行生成的脚本鼠标会真实移动到用户名输入框上点下去。换成多步响应type、click、finished跑完看到登录页出现用户头像整条指令 → 动作 → 验证的链路就通了。整个跟做流程不到 5 分钟主要时间花在安装依赖上。 效果如何三个基准的自动化测试数据数字来自仓库 README 的性能对比表均为 UI-TARS-1.5 的官方成绩Android World移动端操作64.2此前最好成绩 59.5差约 5 个百分点。OSWorld桌面100 步42.5此前最好 38.1且那是 200 步的配置。ScreenSpotPro元素定位61.6作为对比OpenAI CUA 为 23.4。其中定位任务的差距最大而点得准正是后面所有操作的地基。复现时建议跟官方推理脚本走别急着调提示词。⚠️ 踩过的坑现象所有点击坐标偏左上角点不到目标。原因解析时没传原始截图的宽高模型的绝对坐标没按原图尺寸换算。解法给 origin_resized_width/height 传截图真实宽高且 pyautogui 生成环节的 image_width/height 要和它一致。现象解析直接抛 Action cant parse。原因模型输出的 Action 行不规范——少了右括号或者参数名写错比如输出 point 而不是 start_box解析器靠字符串匹配偏一点就断。解法提示词直接用仓库里的 MOBILE_USE/COMPARSE_USE 模板约束输出格式偶发失败就重试一次。现象同一份输出在 A 机上正常B 机上全偏。原因model_type 传错。qwen25vl 输出绝对像素坐标老版本 qwen2vl 输出的是归一化坐标乘 factor 1000两者处理方式完全不同。解法model_type 跟着你实际用的模型传。现象输入中文或长文本时内容截断、粘贴失败。原因默认 input_swapTrue 走剪贴板粘贴pyperclip环境里没装 pyperclip 或剪贴板被占用都会丢内容。解法确认装了 pyperclip或者传 input_swapFalse 改成逐字符输入。 往更深处走多分辨率设备解析器里的 smart_resize 已经处理了模型看到的尺寸 ≠ 原始截图尺寸的问题接不同分辨率的设备时每步传当前截图的宽高即可逻辑在 codes/ui_tars/action_parser.py。接入 CI 流水线把截图 → 模型 → pyautogui 脚本的循环固化成冒烟测试每次构建跑一遍核心流程失败时保存截图加模型的 Thought 供人工复盘。如果你的场景需要特殊操作比如双指捏合复制 codes/ui_tars/prompt.py 里的模板在 Action Space 里加一行就行。 资源入口包用法与 API 说明codes/README.md模型部署与首次推理README_deploy.md多轮测试输入示例data/test_messages.json建议先跑一遍 codes/tests/ 下的单元测试确认解析链路可用再把 data/ 下的测试用例换成自己的业务场景最后再接模型。【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价