上个月团队里一个测试同学跟我说,他用AI写E2E测试,前十分钟很爽,后三个小时全在修定位器。改完一个冒两个,最后算了一下,自己从零手写也就四十分钟。
我问他:“你让AI写之前,看过页面长什么样吗?”
他说:“没有。我就说‘帮我写一个登录的E2E测试’。”
这就是问题所在。AI没看过你的页面,它写的每一行都建立在一个想象出来的DOM上。 你修的那三个小时,本质上是在逐个纠正AI的“想象”和真实页面之间的差距。
browser-use CLI解决的就是这个“想象”问题。它让Agent先操作浏览器、读取真实的页面结构,再基于它实际看到的东西生成测试。你不需要写定位器,也不需要写等待——定位器来自快照,等待内建在动作里。
先搞清楚:browser-use CLI 和 Playwright MCP 有什么区别?
两者解决的是同一个问题的不同侧面。
Playwright MCP 是“让Claude看页面、写Playwright代码”。它适合已经有一套Playwright测试体系、想让AI辅助生成和维护脚本的场景。
browser-use CLI 是“让Agent直接操作浏览器、完成任务”。它更偏“执行”,适合探索性测试、流程验证、以及没有稳定API的内部系统。
两者不是替代关系。如果你想要的是“AI帮我写测试脚本”,用Playwright MCP。如果你想要的是“AI帮我去点一遍、看看有没有问题”,用browser-use CLI。
这篇文章讲后者。
最小工作流:四步跑通
第1步:安装(2分钟)
前置条件:Python 3.11+。macOS和Linux可以用一行脚本安装,Windows需要先装Git for Windows。
macOS / Linux:
curl -fsSL https://browser-use.com/cli/install.sh | bash
Windows(PowerShell):
& "C:\Program Files\Git\bin\bash.exe" -c 'curl -fsSL https://browser-use.com/cli/install.sh | bash'
装完之后跑一下诊断:
browser-use doctor
这个命令会检查Python版本、Chromium是否就绪、依赖是否完整。看到全绿就说明安装成功了。
第2步:先用CLI“手动”理解页面(5分钟)
这一步很多人跳过,但它决定了你后面能不能用好Agent。
browser-use CLI的设计很有意思:它把“操作浏览器”拆成了一个个单独的命令,你可以像敲git一样一步步操作浏览器。
打开页面browser-use open https://demo.playwright.dev/todomvc# 查看当前页面上有哪些可交互元素browser-use state# 截图browser-use screenshot todo.png
browser-use state 会返回当前页面的可交互元素列表,每个元素带一个索引:
[0] textbox "What needs to be done?"[1] button "All"[2] button "Active"[3] button "Completed"
然后你可以直接按索引操作:
browser-use type"Buy groceries"browser-use click 1
这一套命令的价值在于:你不需要写任何代码,就能“手动”走一遍页面,理解它的结构。 走完之后,你才知道该让Agent做什么、不该做什么。
第3步:让Agent替你“跑”一遍(10分钟)
理解了页面之后,再用Agent。
browser-use CLI支持通过自然语言让Agent自主完成任务。你需要先配置一个模型API Key。模型选择直接影响成功率和成本,browser-use官方基准测试的数据值得参考:
在Browser Use Bench v2.1(180个真实网站任务)中,DeepSeek V4.1 Flash 1017 max得分75.0,每个任务成本22美分;GPT-6.1 Sol medium得分79.6,但成本是1.30美元;Claude Sonnet 5.5 high得分72.7,成本1.53美元。
性价比最高的选择是DeepSeek V4.1 Flash系列——得分和Claude Sonnet 5.5 high持平甚至略高,成本只有它的十四分之一。
配置环境变量:
export OPENAI_API_KEY="your-key"export OPENAI_BASE_URL="https://api.deepseek.com/v1"export OPENAI_MODEL="deepseek-chat"
然后给Agent一个任务:
browser-use run "打开 https://demo.playwright.dev/todomvc,添加三条任务:Buy groceries、Walk dog、Read book。然后把第一条标记为完成,验证剩余数量显示为2。"
Agent会自己打开页面、读取快照、决策下一步操作、执行点击和输入。你会在终端里看到它在“点”浏览器,每一步都有记录。
第4步:Review,只检查三件事(5分钟)
Agent跑完之后,你不需要逐行看日志。只检查三件事:
第一,它有没有“走偏”。 Agent可能在某个步骤选错了元素,或者跳过了某个操作。看最终的页面状态和截图,确认任务是否真的完成了。
第二,断言够不够。 只验证“页面显示了2 items left”不够。至少要加一层业务状态校验——比如通过browser-use get读取页面数据,或者用browser-use screenshot留证。
第三,会话有没有隔离。 如果你同时跑多个任务,用-s参数给每个任务独立的会话,避免互相污染:
browser-use -s todo-test open https://demo.playwright.dev/todomvcbrowser-use -s login-test open https://example.com/loginbrowser-use sessions # 查看所有会话browser-use close --all # 清理
一个真实场景:用Agent做“冒烟巡检”
我们团队现在每周一早上跑一次“冒烟巡检”,用的是browser-use CLI。
任务是这样的:
browser-use run "打开测试环境的订单列表页,用测试账号登录。登录后检查订单列表是否正常加载,至少显示3条订单。然后点击第一条订单的'详情'按钮,检查详情页的订单号是否和列表页一致。如果任何一步失败,截图并记录当前URL。"
Agent跑完之后,会输出一份执行记录和截图。测试同学只需要看一眼截图和结论,不需要自己点一遍。
实测下来,一个中等复杂度的冒烟流程,手动跑需要8—10分钟。Agent跑完大概2—3分钟,而且每一步都有截图和快照留证。省下来的时间,花在了“判断哪些冒烟项值得沉淀成自动化”上,而不是“点按钮”上。
避坑指南
坑一:模型选错,成功率暴跌。 browser-use官方基准显示,不同模型的浏览器任务得分差距很大。GPT-6 Luna medium得分64.3,DeepSeek V4.1 Flash max得分75.0,差了十多个百分点。选模型不能只看“贵不贵”,要看“在你这类任务上表现稳不稳”。 建议先用DeepSeek V4.1 Flash跑通,再根据场景复杂度决定要不要换更强的模型。
坑二:用日常Chrome的Profile跑Agent。 CLI支持连接真实Chrome(--browser real),但这会让Agent接触你的登录态、Cookie和个人数据。默认用独立的临时Profile,只有在确实需要登录、并且评估过风险的情况下,才连真实Profile。
坑三:不限制可访问域名。 Agent在自主执行时可能跳到你不希望它去的页面。用allowed_domains限制范围,同时阻止内网IP和云元数据地址。
坑四:以为“跑完没报错”就等于“任务成功”。 Agent可能“完成了”任务但结果是错的。必须加断言——页面状态、关键字段、最终业务结果,至少验一层。
坑五:一次性给太长的任务。 Agent在长任务中容易丢失上下文或陷入循环。把任务拆短,一个场景一个场景跑,跑通一个再跑下一个。
最后
回到开头那个问题:为什么他修了三个小时?
因为他让AI在“没有看过页面”的情况下写代码。 browser-use CLI做的事情,是把“写代码”这一步绕过去——Agent直接操作浏览器,你给它目标,它自己看页面、自己做决策、自己执行。
你不需要写定位器。你不需要写等待。你甚至不需要写脚本。
你只需要告诉它:打开哪个页面,做什么,验证什么。
下次你面对一个“没有API、只有页面”的流程要测的时候,别打开编辑器了。装好browser-use CLI,先手动敲一遍open和state,然后用run让Agent跑一遍。
30分钟,从“手动点”到“Agent替你点”。
本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。