Skip to content

纯UI自动化平台-win(后续支持移动端,mac等)

Notifications You must be signed in to change notification settings

SolidQA/autoRobot

Repository files navigation

AutoRobot - Windows 自动化测试用例管理系统

一个完整的全栈自动化测试用例管理系统,支持 Windows 应用自动化、OCR 识别、图像匹配和原生控件操作。

✨ 核心特性

🎯 多种定位方式

  • 原生控件 - 通过控件名称精确定位(PyWinAuto)
  • OCR 文字识别 - 通过文字内容定位(PaddleOCR)
  • 图像模板匹配 - 通过截图模板定位(OpenCV)
  • 全局键盘事件 - 无需定位,直接发送键盘指令

🖱️ 丰富的操作类型

  • 鼠标操作 - 单击、双击、右键、悬停、拖拽
  • 输入操作 - 文本输入、清空输入框
  • 键盘操作 - 快捷键、组合键
  • 等待操作 - 延迟执行

🔧 高级功能

  • 网格点击 - 图像匹配支持网格分割,精确点击指定区域(如 1/3:1/-1 表示 1 行 3 列网格,点击最右边)
  • 自动重试 - 定位失败或操作失败时自动重试,可配置重试次数和间隔
  • 调试模式 - 可视化显示匹配结果、网格分割、点击位置
  • 全局配置 - 统一配置图像阈值、OCR 阈值、重试策略等
  • 类型安全 - Python Pydantic 模型自动生成 TypeScript 类型

📊 用例管理

  • 创建、编辑、删除测试用例
  • 可视化编辑测试步骤
  • 单步调试和完整执行
  • 执行结果记录和查看

🚀 快速开始

环境要求

  • Python 3.12+
  • Node.js 18+
  • pnpm 8+
  • uv (Python 包管理器)

1. 克隆项目

git clone <repository-url>
cd autoRobot

2. 安装依赖

# Python 依赖
uv sync

# 安装 solidvision(核心 OCR 和图像识别库)
cd solidvision
uv pip install -e .
cd ..

# 前端依赖
cd web
pnpm install
cd ..

3. 启动服务

# 后端(终端 1)
uv run python -m uvicorn backend.main:app --reload --port 8000

# 前端(终端 2)
cd web
pnpm dev

4. 访问应用

📖 使用指南

创建测试用例

  1. 访问首页,点击"+ 新建用例"
  2. 填写用例名称和描述
  3. 点击用例进入详情页

添加测试步骤

每个步骤包含以下配置:

1. 软件和窗口(全局键盘事件除外)

  • 软件名称 - 目标应用程序
  • 窗口标题 - 窗口标题(支持自动获取)

2. 定位类型

  • 原生控件 - 输入控件名称
  • OCR 文字识别 - 输入要查找的文字
  • 图像模板匹配 - 上传截图模板,支持网格点击
  • 全局键盘事件 - 不需要定位

3. 操作类型

根据定位类型,支持不同的操作:

  • 原生控件/OCR/图像 - 单击、双击、右键、悬停、拖拽
  • 原生控件 - 输入(只有原生控件支持输入框定位)
  • 全局键盘 - 键盘操作(快捷键或文本输入)
  • 所有类型 - 等待

4. 操作参数

  • 输入操作 - 输入文本、是否清空前置内容
  • 拖拽操作 - X/Y 轴偏移量、拖拽时长
  • 悬停操作 - 悬停时长
  • 等待操作 - 等待时长
  • 键盘操作 - 快捷键或文本

执行测试

  • 单步执行 - 点击步骤右侧的"▶ 执行"按钮
  • 完整执行 - 在用例详情页点击"▶ 运行用例"按钮

全局配置

访问"配置"页面,可以调整:

调试模式

  • 启用调试模式
  • 弹窗显示调试图片
  • 保存调试图片到文件

图像识别

  • 图像匹配阈值(0.7-0.9,推荐 0.8)
  • OCR 置信度阈值(0.5-0.8,推荐 0.6)

执行配置

  • 操作间隔(每个操作之间的等待时间)
  • 窗口激活延迟(激活窗口后的等待时间)
  • 最大重试次数(1-10 次,推荐 3 次)
  • 重试间隔(0-5 秒,推荐 1 秒)

🏗️ 技术栈

后端

  • FastAPI - 现代化的 Python Web 框架
  • SQLAlchemy - ORM 数据库操作
  • Pydantic - 数据验证和类型生成
  • SQLite - 轻量级数据库
  • PyAutoGUI - 鼠标键盘控制
  • PyWinAuto - Windows UI 自动化
  • SolidVision - OCR 和图像识别(基于 PaddleOCR)
  • OpenCV - 图像处理和模板匹配

前端

  • React 19 - 现代化前端框架
  • TanStack Router - 类型安全的路由
  • shadcn/ui - 现代化 UI 组件库
  • Tailwind CSS - 实用优先的 CSS 框架
  • TypeScript - 类型安全
  • Vite - 快速构建工具

📁 项目结构

autoRobot/
├── backend/                    # FastAPI 后端
│   ├── models/                # Pydantic 数据模型
│   │   ├── test_case.py      # 测试用例模型
│   │   ├── test_step.py      # 测试步骤模型(包含操作类型枚举)
│   │   ├── execution.py      # 执行结果模型
│   │   └── config.py         # 全局配置模型
│   ├── schemas/               # SQLAlchemy 数据库模型
│   ├── api/                   # API 路由
│   │   ├── test_cases.py     # 用例管理 API
│   │   ├── execution.py      # 执行 API
│   │   ├── config.py         # 配置 API
│   │   ├── system.py         # 系统 API(获取窗口列表等)
│   │   └── preview.py        # 预览 API
│   ├── services/              # 业务逻辑
│   ├── database.py            # 数据库配置
│   ├── config.py              # 应用配置
│   ├── main.py                # 应用入口
│   └── generate_types.py      # TypeScript 类型生成脚本
├── src/                       # 自动化引擎
│   ├── core/                  # 核心引擎(分层架构)
│   │   ├── engine.py         # 步骤执行协调器(带重试机制)
│   │   ├── location_resolver.py  # 位置解析器
│   │   ├── action_executor.py    # 操作执行器
│   │   └── window_manager.py     # 窗口管理器
│   ├── strategies/            # 识别策略
│   │   ├── visual_strategy.py    # 视觉识别(OCR + 图像匹配)
│   │   └── native_strategy.py    # 原生控件识别
│   └── utils/                 # 工具类
│       ├── debug_visualizer.py   # 调试可视化
│       └── grid_helper.py        # 网格分割辅助
├── web/                       # React 前端
│   ├── src/
│   │   ├── api/              # API 客户端和类型
│   │   │   ├── client.ts     # API 客户端
│   │   │   ├── config.ts     # 配置 API
│   │   │   ├── constants.ts  # API 常量(统一 URL)
│   │   │   └── types.d.ts    # 自动生成的 TypeScript 类型
│   │   ├── routes/           # 页面路由
│   │   ├── pages/            # 页面组件
│   │   │   └── ConfigPage.tsx # 全局配置页面
│   │   └── components/       # React 组件
│   │       ├── test-case/    # 测试用例组件
│   │       │   ├── AddStepDialog.tsx        # 添加步骤对话框
│   │       │   ├── WindowSoftwareFields.tsx # 软件窗口选择
│   │       │   ├── LocationFields.tsx       # 定位字段路由
│   │       │   ├── ActionParamsFields.tsx   # 操作参数路由
│   │       │   ├── GridVisualizer.tsx       # 网格可视化
│   │       │   ├── location-fields/         # 定位字段组件
│   │       │   └── action-params/           # 操作参数组件
│   │       ├── config/       # 配置组件
│   │       │   └── DebugPanel.tsx # 调试配置面板
│   │       └── ui/           # shadcn/ui 组件
│   └── package.json
├── solidvision/               # 图像识别库(独立包)
│   ├── solidvision/
│   │   ├── aircv/            # 图像匹配(基于 OpenCV)
│   │   ├── orc/              # OCR 识别(基于 PaddleOCR)
│   │   ├── options/          # 配置选项
│   │   └── utils/            # 工具类
│   └── pyproject.toml
├── pyproject.toml             # Python 依赖
├── uv.lock                    # Python 依赖锁定
└── README.md

🔧 开发指南

代码质量检查

# 检查代码质量
ruff check .

# 自动修复问题
ruff check --fix .

# 格式化代码
ruff format .

生成 TypeScript 类型

修改 backend/models/ 中的 Pydantic 模型后,运行:

uv run python backend/generate_types.py

TypeScript 类型会自动同步到 web/src/api/types.d.ts

前端构建

cd web
pnpm build

构建产物在 web/dist/ 目录

🎨 设计理念

后端架构 - 分层设计

  1. Orchestration(协调层) - AutoEngine

    • 步骤执行协调
    • 重试机制
    • 错误处理
  2. Resolution(解析层) - LocationResolver

    • 位置解析
    • 窗口管理
    • 坐标转换
  3. Execution(执行层) - ActionExecutor

    • 操作执行
    • 鼠标键盘控制
    • 输入处理
  4. Infra(基础设施层) - WindowManager, VisualStrategy, NativeStrategy

    • 窗口操作
    • 识别策略
    • 底层调用

前端架构 - 组件化

  • 路由组件 - 根据类型动态渲染子组件
  • 功能组件 - 单一职责,可复用
  • UI 组件 - shadcn/ui 统一风格
  • 自定义 Hook - 状态管理和逻辑复用

类型安全

  • 后端 Pydantic 模型自动生成 TypeScript 类型
  • 前后端类型完全一致
  • 减少手动维护成本

📝 API 文档

启动后端服务后,访问 http://localhost:8000/docs 查看完整的 API 文档(Swagger UI)。

主要 API 端点

用例管理

  • GET /api/test-cases/ - 获取所有用例
  • GET /api/test-cases/{id} - 获取单个用例
  • POST /api/test-cases/ - 创建用例
  • PUT /api/test-cases/{id} - 更新用例
  • DELETE /api/test-cases/{id} - 删除用例

执行

  • POST /api/execution/run-case/{id} - 执行用例
  • POST /api/execution/run-step/{id} - 执行单步

配置

  • GET /api/config/ - 获取全局配置
  • PUT /api/config/ - 更新全局配置
  • POST /api/config/reset - 重置配置

系统

  • GET /api/system/software-list - 获取软件列表
  • GET /api/system/windows - 获取窗口列表

🤝 贡献

欢迎提交 Issue 和 Pull Request!

开发规范

  • Python 代码遵循 PEP 8 规范
  • 使用 ruff 进行代码检查和格式化
  • TypeScript 代码使用 ESLint 检查
  • 提交前运行代码质量检查

📄 许可证

MIT License

🙏 致谢

About

纯UI自动化平台-win(后续支持移动端,mac等)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published