前言大家好前几期我们从 RAG 到单 Agent 再到 Self-Healing已经逐步把 AI 融入 Web UI 自动化。本期实现质的飞跃构建多 Agent 协作测试平台让不同 Agent 分工协作显著提升生成代码的质量和稳定性。核心架构Planner规划 → Coder编码 → Executor执行 → Reviewer评审循环优化。一、多 Agent 协作整体流程Planner Agent理解需求拆解测试步骤生成测试计划Coder Agent根据计划生成规范的 POM 代码 Self-HealingExecutor Agent执行测试收集结果和截图Reviewer Agent评审代码和执行结果提出改进意见如需则返回 Coder 优化二、环境准备沿用前几期Bashpip install langchain langchain-ollama langgraph # langgraph 用于多 Agent 编排三、核心代码实现细致版1. 定义四个 Agent 的 Prompt核心灵魂Pythonfrom langchain_ollama import ChatOllama from langchain_core.prompts import ChatPromptTemplate llm ChatOllama(modelqwen2.5:14b, temperature0.1) # Planner Agent planner_prompt ChatPromptTemplate.from_template( 你是一位测试架构师。根据用户需求输出结构化的测试计划。 需求{input} 输出格式严格遵守 - 测试目标 - 核心流程步骤 - 需要检查的关键点 - 可能的风险点 - 建议使用的 Page 类 ) # Coder Agent coder_prompt ChatPromptTemplate.from_template( 你是一位 Playwright 专家使用 POM Self-Healing 模式编写代码。 测试计划{plan} 要求 1. 继承 BasePage 类 2. 所有点击使用 safe_click 或 self_healing_click 3. 加入详细的 try-except 截图 4. 使用稳定定位器 只输出完整可运行的 Python 代码不要解释。 ) # Reviewer Agent reviewer_prompt ChatPromptTemplate.from_template( 你是一位严苛的测试代码 Reviewer。 代码{code} 执行结果{execution_result} 请从以下维度评审并给出改进建议 - 代码规范性 - 健壮性错误处理 - 定位器稳定性 - 是否需要优化 )2. 使用 LangGraph 构建多 Agent 工作流2026 推荐方式Pythonfrom langgraph.graph import StateGraph, END from typing import TypedDict class TestState(TypedDict): input: str plan: str code: str execution_result: str review_feedback: str final_code: str def planner_node(state: TestState): response llm.invoke(planner_prompt.format(inputstate[input])) state[plan] response.content return state def coder_node(state: TestState): response llm.invoke(coder_prompt.format(planstate[plan])) state[code] response.content return state def executor_node(state: TestState): result execute_playwright_test(state[code]) # 使用前几期定义的 tool state[execution_result] result return state def reviewer_node(state: TestState): response llm.invoke(reviewer_prompt.format( codestate[code], execution_resultstate[execution_result] )) state[review_feedback] response.content # 如果需要优化可返回 coder_node if 需要优化 in response.content: return coder_node(state) state[final_code] state[code] return state # 构建工作流 workflow StateGraph(TestState) workflow.add_node(planner, planner_node) workflow.add_node(coder, coder_node) workflow.add_node(executor, executor_node) workflow.add_node(reviewer, reviewer_node) workflow.set_entry_point(planner) workflow.add_edge(planner, coder) workflow.add_edge(coder, executor) workflow.add_edge(executor, reviewer) workflow.add_edge(reviewer, END) app workflow.compile()使用示例Pythonresult app.invoke({input: 测试电商网站完整下单流程登录 → 加入购物车 → 结算 → 支付}) print(result[final_code])四、常见报错及解决方案实战总结TimeoutError: waiting for selector解决加强 page.wait_for_load_state(networkidle) 使用 self_healing_clickPlaywright code execution failed: No module named playwright解决在 Executor 中动态安装或确保虚拟环境一致Agent 生成代码使用 XPath 或 脆弱的 CSS 选择器解决在 Coder Prompt 中强约束“必须优先使用 getByRole、getByLabel、getByTestId”Reviewer Agent 一直循环优化死循环解决添加最大迭代次数max_iterations3或在 Reviewer Prompt 中加入“如果达到可接受标准则停止”Ollama 显存不足 / 推理过慢解决使用更小模型qwen2.5:7b做 Coderllava 用于视觉或升级硬件截图路径不存在解决在 BasePage 初始化时自动创建 os.makedirs(screenshots, exist_okTrue)多 Agent 协作时上下文丢失解决使用 LangGraph 的持久化状态或手动传递关键信息生成的代码缩进错误或语法问题解决在 Executor 执行前增加代码格式化使用 black 库或让 Reviewer 重点检查语法五、生产落地建议将工作流封装成 Web 服务FastAPI集成 Allure 报告 测试管理平台TestRail / Xray核心流程固定人工规则 AI 自愈混合使用定期收集失败案例反馈优化 Agent Prompt六、今日感悟从单 Agent 到多 Agent 协作我深刻体会到构建 AI 测试平台的核心不是单个模型而是合理的 Agent 分工和 Review 机制。这套系统已经接近生产可用极大降低了测试脚本的维护成本。下一期预告AI Web UI 自动化专栏 #04AI 自动化测试平台 Web 界面实战FastAPI React/Vue 简单前端 一键生成执行测试