基于page-agent实现UI自动化测试

基于 alibaba/page-agent 来实现自动化测试,但它与传统的自动化测试工具(如 Playwright、Selenium)有很大的不同。

page-agent 是阿里巴巴开源的一个 基于大语言模型(LLM)驱动的纯前端浏览器自动化库。它颠覆了传统测试中"依赖繁琐、易碎的 DOM 选择器(Selectors)"的模式,允许你用纯自然语言(Natural Language)来编写和执行测试用例。

以下是关于如何使用它进行自动化测试的详细分析、优势、以及局限性:

1. 它是如何应用在自动化测试中的?

在传统测试中,如果一个按钮的 class 变了,测试脚本就会崩溃。而使用 page-agent,它会通过内置的 AI Agent 运行在浏览器端,读取当前页面的 DOM 结构并进行语义分析,然后直接调度原生浏览器事件。

你可以将其整合进测试工作流(例如结合 Playwright 或传统的测试框架):

  • 以前的测试脚本 (Playwright):

    JavaScript

    csharp 复制代码
    await page.locator('#username').fill('testuser');
    await page.locator('.btn-submit-active').click();
  • 使用 page-agent 的测试脚本:

    JavaScript

    javascript 复制代码
    import { PageAgent } from 'page-agent';
    
    const agent = new PageAgent({
      model: 'gpt-4', // 或 qwen-plus, claude 等
      apiKey: process.env.LLM_API_KEY,
    });
    
    // 直接用自然语言下达测试指令
    await agent.execute("用 'testuser' 填充用户名,并点击登录按钮");

2. 用它做自动化测试的核心优势

  • 拒绝"易碎"的脚本(No More Brittle Selectors): 前端改了 UI 样式、更换了类名或调整了 DOM 结构,只要业务逻辑没变,AI 就能自动识别出正确的输入框和按钮,极大地降低了测试脚本的日常维护成本。
  • 零门槛编写测试用例: 测试人员或产品经理只需直接编写自然语言的 Scenario(测试场景说明书),无需深厚的前端编码背景即可创建测试。
  • 智能应对动态内容: 它具备语义理解能力,能够自主理解复杂的表单、多步骤的交互流程(如:电商从加购到结算的完整 Workflow),对边缘case有一定的容错和推理能力。
  • 纯前端、轻量化: 它不强依赖于服务端的 Python 环境或复杂的 Headless 浏览器配置,可以直接通过 NPM 安装,或通过一个 <script> 标签注入到前端页面中运行。

3. 用于自动化测试的局限性与避坑指南

虽然它很强大,但目前将其完全替代传统自动化测试还为时过早,通常更建议将其作为辅助增强工具

  • 运行成本与速度: 传统脚本执行是毫秒级的,而 page-agent 每走一步都需要调用 LLM API 进行推理和决策,测试执行速度较慢,且会产生 API Token 费用。如果 CI/CD 流程中每天要跑 10,000 个测试用例,全盘使用它成本会非常高。
  • 测试结果的确定性: 大模型存在"幻觉"或不确定性。同一个自然语言指令,大模型在不同时间的点击顺序或理解可能略有偏差。对于追求"绝对断言(Assertion)"的严谨回归测试,这可能带来误报。
  • 视觉验证能力有限: 官方维护者在社区讨论中提到,page-agent 目前主要基于文本和 DOM 树进行状态理解。如果你的测试需要验证"图片是否渲染正确"、"弹窗是否样式错位"等视觉层面的 Outcome,它不如端到端视觉 Agent。
  • 文件操作受限: 目前它在纯浏览器沙箱内运行,涉及本地文件上传/下载等底层操作系统级别的交互测试(File handling)支持比较有限。

总结建议

如果你想引入 alibaba/page-agent最佳的落地场景是:

  1. 复杂业务流的端到端(E2E)冒烟测试: 用它来模拟真实用户去跑完一条长链路的业务流(如:注册 →\rightarrow → 选品 →\rightarrow → 下单 →\rightarrow → 支付),验证主流程是否跑得通。
  2. 配合现有框架(混合模式): 用 Playwright/Puppeteer 负责底层的页面加载、断言和批量执行,在遇到极其复杂的表单填充或动态交互时,调用 page-agent 让 AI 来接管这段高成本的交互逻辑。
相关推荐
刘棕霆1 天前
18—sentry-static 入口收敛:从多能力检查到 1 个静态分析入口
aigc·测试
学代码的真由酱9 天前
【自用】接口测试
接口测试·postman·测试·cookie·token鉴权
ClouGence11 天前
自动化测试 CueCast 新版本发布:录制更稳、回放更准、排障更清晰
前端·程序员·测试
钧界编程12 天前
EasyClick 入门指南(十七):文件操作完全指南
测试
技术落地手记13 天前
一个需求 ID 换一份完整测试用例,我让 AI 替测试同事省掉半天
单元测试·测试
暗冰ཏོ14 天前
软件测试完整学习指南:从入门到自动化、性能与安全测试实战
软件测试·功能测试·单元测试·集成测试·压力测试·测试·安全性测试
弹简特14 天前
【接口自动化】02-Pytest固件fixture核心机制与Allure企业级报告实战
自动化·pytest·测试