由于 2026 年前离职到 6 月仍然没有找到工作,在此期间猛补 Agent 开发相关的技能,虽说之前做过 LLM +RAG 的本地知识库问答,但随着小龙虾横空出世,将 agent 场景使用具象化。趁着这段时间学习折腾,做了个 UI 自动化测试平台 Agent
基于 LangChain + LangGraph 的智能化、零代码 Web UI 自动化测试平台。
自动化 UI 测试 Agent 是一款基于 FastAPI + Vue3 + LangChain/LangGraph 的企业级 Web UI 自动化测试平台,具有以下特点:
| 技术 | 版本 | 说明 |
|---|---|---|
| Python | 3.11+ | 编程语言 |
| FastAPI | 0.109.0 | 高性能 Web 框架 |
| Uvicorn | 0.27.0 | ASGI 服务器 |
| SQLAlchemy | 2.0.25 | 异步 ORM 框架 |
| LangChain | 1.3.9 | LLM 应用开发框架 |
| LangGraph | 1.2.5 | 状态机工作流引擎 |
| langchain-openai | 1.3.2 | OpenAI 兼容接口 |
| Playwright | 1.41.0 | 自动化测试工具 |
| SQLite | 内置 | 轻量级数据库 |
| 技术 | 版本 | 说明 |
|---|---|---|
| Vue | 3.4+ | 前端框架 |
| Element Plus | 2.6+ | UI 组件库 |
| Pinia | 2.1+ | 状态管理 |
| Vue Router | 4.3+ | 路由管理 |
| ECharts | 5.5+ | 图表库 |
| Vite | 5.4+ | 构建工具 |
Agent = 大模型(LLM) + 思考决策逻辑(LangGraph) + 外部工具集(LangChain Tools) + 标准化SKILL
llm = ChatOpenAI(
model="deepseek-chat",
temperature=0.5,
api_key=apikey,
base_url=baseurl
)
@tool 装饰器定义工具遵循主流开源企业级 Agent 工程规范:
skills/
└── <skill_name>/ # 独立可插拔技能目录
├── SKILL.md # 技能说明文档(场景、约束、风险提示)
├── metadata.yaml # 技能元数据(入参规范、输出格式)
├── examples/ # 使用示例和错误案例
├── templates/ # 模板文件
├── resources/ # 资源文件(白名单、权限规则)
└── scripts/
└── run.py # 核心执行逻辑
| 技能名称 | 描述 | 工具名 |
|---|---|---|
| 页面解析器 | 抓取网页可交互元素 | parse_page |
| 文档解析器 | 解析 PDF/Word 需求文档 | parse_document |
| 用例生成器 | 智能生成测试用例 | generate_cases |
| 测试执行器 | 执行测试用例 | execute_tests |
| 报告生成器 | 生成测试报告 | generate_report |
只需创建符合规范的技能目录,系统启动时自动发现并注册:
skills/your_skill/
metadata.yaml 定义元数据scripts/run.py 实现核心逻辑ai_uitest_agent/
├── agent/ # Agent核心模块
│ ├── __init__.py
│ ├── core.py # 代理核心逻辑
│ └── langgraph_agent.py # LangGraph状态机代理
├── api/ # API接口模块
│ ├── __init__.py
│ ├── routes.py # REST API路由
│ ├── schemas.py # 数据模型定义
│ ├── websocket.py # WebSocket处理
│ └── websocket_manager.py # WebSocket连接管理
├── skills/ # 技能模块(标准化结构)
│ ├── __init__.py
│ ├── langchain_tools.py # LangChain工具注册
│ ├── page_parser/ # 页面解析器技能
│ │ ├── SKILL.md
│ │ ├── metadata.yaml
│ │ └── scripts/run.py
│ ├── document_parser/ # 文档解析器技能
│ │ ├── SKILL.md
│ │ ├── metadata.yaml
│ │ └── scripts/run.py
│ ├── case_generator/ # 用例生成器技能
│ │ ├── SKILL.md
│ │ ├── metadata.yaml
│ │ └── scripts/run.py
│ ├── test_executor/ # 测试执行器技能
│ │ ├── SKILL.md
│ │ ├── metadata.yaml
│ │ └── scripts/run.py
│ └── report_generator/ # 报告生成器技能
│ ├── SKILL.md
│ ├── metadata.yaml
│ └── scripts/run.py
├── tools/ # 工具模块
│ ├── __init__.py
│ ├── browser.py # 浏览器操作工具
│ ├── config.py # 配置管理
│ ├── database.py # 数据库操作
│ ├── document_parser.py # 文档解析工具
│ └── logger.py # 日志管理
├── ui/ # 前端模块
│ ├── src/
│ │ ├── api/ # API调用封装
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # 状态管理
│ │ ├── views/ # 页面组件
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
├── .env # 环境变量配置
├── main.py # 应用入口
├── requirements.txt # Python依赖
└── uitest_agent.db # SQLite数据库文件



https://gitee.com/fxlysm/ai_uitest_agent.git