基于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 来接管这段高成本的交互逻辑。
相关推荐
一孤程20 小时前
AI辅助测试用例生成实战——用大模型把测试设计效率提升300%
人工智能·测试工具·ai·aigc·测试用例·测试·测试覆盖率
不能只会打代码2 天前
Day 002 — Python 工程化 & FastAPI & 数据库速通
数据库·redis·python·docker·fastapi·测试
狂师2 天前
还在手写测试报告?推荐一款 AI 测试Skill:只需一句指令,自动生成专业定制化测试报告!
人工智能·测试·全栈
xixingzhe22 天前
软件开发测试分层与CI/CD、沙箱使用完整指南
ci/cd·测试
ClouGence3 天前
8 款好用的 Web 自动化测试工具大盘点:怎么选、适合谁?
selenium·测试
狂师3 天前
测试人员必备:推荐一款智能测试数据清理AI Skill,支持db、redis、mq等
数据库·aigc·测试
ckjoker4 天前
让AI给AI当法官:手敲LLM-as-a-Judge评估系统,25次调用跑出最弱维度
llm·agent·测试
程序员天天困5 天前
JaCoCo 代码覆盖率:Spring Boot 集成与报告解读
单元测试·测试
一孤程6 天前
Airtest自动化测试第五篇:小程序与Web测试——跨平台自动化全覆盖
前端·自动化测试·小程序·自动化·测试·airtest