Agent Skillsaresbit/MateBot › harmonyos-ui-automator

harmonyos-ui-automator

GitHub

HarmonyOS UI自动化技能,通过hdc获取布局树并定位组件,执行点击、滑动、输入等交互操作,适用于UI测试及应用自动化。

skills/harmonyos-skills/skills/harmonyos-ui-automator/SKILL.md aresbit/MateBot

Trigger Scenarios

HarmonyOS应用UI自动化测试 需要模拟用户进行界面交互操作 验证特定界面状态或组件行为

Install

npx skills add aresbit/MateBot --skill harmonyos-ui-automator -g -y
More Options

Non-standard path

npx skills add https://github.com/aresbit/MateBot/tree/master/skills/harmonyos-skills/skills/harmonyos-ui-automator -g -y

Use without installing

npx skills use aresbit/MateBot@harmonyos-ui-automator

指定 Agent (Claude Code)

npx skills add aresbit/MateBot --skill harmonyos-ui-automator -a claude-code -g -y

安装 repo 全部 skill

npx skills add aresbit/MateBot --all -g -y

预览 repo 内 skill

npx skills add aresbit/MateBot --list

SKILL.md

Frontmatter
{
    "name": "harmonyos-ui-automator",
    "description": "HarmonyOS UI 自动化交互技能。通过 hdc dump ArkUI 布局树,理解当前界面状态,根据用户意图找到目标组件位置,并执行点击、长按、滑动、输入等交互操作。适用于 UI 自动化测试、应用操作自动化等场景。",
    "allowed-tools": [
        "Bash",
        "Read",
        "Write",
        "Glob",
        "Grep",
        "AskUserQuestion"
    ]
}

HarmonyOS UI Automator

功能概述

本技能实现 HarmonyOS 设备的 UI 自动化交互:

  1. Dump 布局树 - 获取当前界面的完整 ArkUI 组件树
  2. 界面理解 - 分析布局树,提取所有可交互组件及其位置
  3. 组件定位 - 根据用户意图(文本、ID、类型等)精准定位目标组件
  4. 交互执行 - 通过 hdc 命令注入点击、长按、滑动、输入等操作

使用场景

  • UI 自动化测试
  • 应用操作流程自动化
  • 界面状态验证
  • 组件定位与调试

快速开始

1. 获取当前界面布局

# 默认输出到 /tmp/harmonyos_layout_<timestamp>.json
python3 $SKILL_DIR/scripts/dump_layout.py

# 指定输出路径
python3 $SKILL_DIR/scripts/dump_layout.py --output /tmp/current_layout.json

返回布局文件路径和界面摘要。

2. 查找组件

# 按文本查找
python3 $SKILL_DIR/scripts/find_component.py --text "设置"

# 按 ID 查找
python3 $SKILL_DIR/scripts/find_component.py --id "AppIcon_Image"

# 按类型查找
python3 $SKILL_DIR/scripts/find_component.py --type "Button"

# 组合条件
python3 $SKILL_DIR/scripts/find_component.py --text "登录" --clickable true

3. 执行交互操作

# 点击坐标
python3 $SKILL_DIR/scripts/interact.py click 660 416

# 点击组件(自动计算中心点;至少提供一个选择器)
python3 $SKILL_DIR/scripts/interact.py click-component --text "设置"

# 长按
python3 $SKILL_DIR/scripts/interact.py long-click 660 416

# 双击
python3 $SKILL_DIR/scripts/interact.py double-click 660 416

# 滑动
python3 $SKILL_DIR/scripts/interact.py swipe 100 500 100 200

# 输入文本(先点击获取焦点)
python3 $SKILL_DIR/scripts/interact.py input-text 200 300 "Hello World"

# 按键事件
python3 $SKILL_DIR/scripts/interact.py key-event Back

# 方向甩动(0=left, 1=right, 2=up, 3=down)
python3 $SKILL_DIR/scripts/interact.py dirc-fling 2

4. 执行系统快捷手势

# 返回桌面
python3 $SKILL_DIR/scripts/shortcut.py home

# 下拉通知栏
python3 $SKILL_DIR/scripts/shortcut.py notification

# 多任务中心
python3 $SKILL_DIR/scripts/shortcut.py recent

工作流程

当用户请求执行某个 UI 操作时,按以下流程执行:

Step 1: 获取布局树

python3 $SKILL_DIR/scripts/dump_layout.py

这会返回:

  • 布局文件路径
  • 界面整体描述
  • 可交互组件列表

Step 2: 分析界面并定位组件

根据用户的意图,在布局树中搜索目标组件:

  • 用户说"点击设置" → 搜索 text="设置" 的可点击组件
  • 用户说"点击搜索框" → 搜索 type 包含 "TextInput" 或 "Search" 的组件
  • 用户说"向下滑动" → 执行向下滑动手势

Step 3: 执行操作

找到组件后,计算其中心坐标,执行相应操作:

# 假设找到的组件 bounds 为 "[100,200][300,400]"
# 中心点为 ((100+300)/2, (200+400)/2) = (200, 300)
python3 $SKILL_DIR/scripts/interact.py click 200 300

布局树结构说明

ArkUI 布局树为 JSON 格式,每个节点包含:

{
  "attributes": {
    "bounds": "[left,top][right,bottom]",  // 组件边界坐标
    "text": "按钮文字",                     // 显示文本
    "type": "Button",                      // 组件类型
    "id": "button_id",                     // 组件 ID
    "clickable": "true/false",             // 是否可点击
    "longClickable": "true/false",         // 是否可长按
    "scrollable": "true/false",            // 是否可滚动
    "enabled": "true/false",               // 是否可用
    "visible": "true/false",               // 是否可见
    "description": "描述"                   // 无障碍描述
  },
  "children": [...]                        // 子组件
}

常用组件类型

类型 说明
Text 文本组件
Image 图片组件
Button 按钮组件
TextInput 输入框
Toggle 开关组件
Checkbox 复选框
List 列表
Grid 网格
Swiper 轮播
Stack 堆叠容器
Row/Column 行/列容器

注意事项

  1. 确保设备已通过 hdc 连接
  2. 多设备同时在线时,必须显式传 --device,避免操作到错误设备
  3. 对于动态加载的内容,可能需要等待后重新 dump
  4. 坐标基于设备屏幕像素,不同分辨率设备坐标不同
  5. click-component / long-click-component 至少要提供一个选择器(--text/--id/--type/--regex
  6. 组件点击默认只匹配 clickable=trueenabled=truevisible=true,避免误点不可交互节点

快速自检

bash $SKILL_DIR/scripts/smoke_test.sh

环境要求

  • Python 3.x
  • hdc 工具(通常位于 DevEco Studio SDK 目录)
  • 设备已开启调试模式

Version History

  • 2328a17 Current 2026-08-20 10:31

Same Skill Collection

matecode/SKILL.md
skills/3d-cad-skill/SKILL.md
skills/agent-browser/SKILL.md
skills/arkts-agent-skill/SKILL.md
skills/autoresearch-skill/SKILL.md
skills/baoyu-post-to-wechat/SKILL.md
skills/blogwatcher/SKILL.md
skills/c-skill/SKILL.md
skills/chrome-cdp/SKILL.md
skills/claudeception/.claude/skills/continuous-learning/SKILL.md
skills/claudeception/examples/nextjs-server-side-error-debugging/SKILL.md
skills/claudeception/examples/prisma-connection-pool-exhaustion/SKILL.md
skills/claudeception/examples/typescript-circular-dependency/SKILL.md
skills/claudeception/SKILL.md
skills/clawdhub/SKILL.md
skills/coding-agent/SKILL.md
skills/docx/SKILL.md
skills/ebook/book-architect/SKILL.md
skills/ebook/book-idea-validator/SKILL.md
skills/ebook/book-ideation/SKILL.md
skills/ebook/book-market-research/SKILL.md
skills/ebook/chapter-architect/SKILL.md
skills/elf-patcher/SKILL.md
skills/excalidraw-diagram-skill/SKILL.md
skills/frontend-slides/SKILL.md
skills/gemini/SKILL.md
skills/gifgrep/SKILL.md
skills/git-wt/SKILL.md
skills/github/SKILL.md
skills/harmonyos-code-review/SKILL.md
skills/harmonyos-linux-cli-dev/SKILL.md
skills/harmonyos-skills/skills/harmonyos-game-generator/SKILL.md
skills/harmonyos-skills/skills/harmonyos-test-cases/SKILL.md
skills/harmonyos-skills/skills/ohos-app-build-debug/SKILL.md
skills/hm-fetch-skill/SKILL.md
skills/hm-framework-skill/SKILL.md
skills/humanizer/SKILL.md
skills/ian-gemini-web/SKILL.md
skills/kernel-dev-skill/SKILL.md
skills/kimi/docx_SKILL.md
skills/kimi/pdf_SKILL.md
skills/kimi/SKILL.md
skills/kimi/webapp-building_SKILL.md
skills/lecture-skill/SKILL.md
skills/macos-menubar-tuist-app/SKILL.md
skills/macos2linuxapp/SKILL.md
skills/matecode/SKILL.md
skills/medialibrary-ut-generator/SKILL.md
skills/mermaid-validator/SKILL.md

Metadata

Files
0
Version
2328a17
Hash
1ebf4a90
Indexed
2026-08-20 10:31

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-26 23:43
浙ICP备14020137号-1 $Carte des visiteurs$