如何用 AI 帮 Playwright 自动找元素:Midscene.js 实战指南

如何用 AI 帮 Playwright 自动找元素:Midscene.js 实战指南 如何用 AI 帮 Playwright 自动找元素Midscene.js 实战指南【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midsceneMidscene.js 是一款视觉驱动的浏览器自动化工具它把 Playwright 的跨浏览器执行能力和视觉大模型的元素定位结合在一起——你用点击登录按钮这样的自然语言下指令它负责找到元素、完成操作并自动产出带截图和 AI 决策日志的交互式 HTML 报告。下面按安装、原理、两种写法、踩坑排查的顺序把接入过程讲一遍。三步跑通 Midscene.js 与 Playwright 的集成1. 安装依赖与浏览器npm install midscene/web playwright npx playwright install运行前还需要配好一个具备 UI 定位能力的视觉模型通过环境变量注入否则 Agent 无法看懂页面截图。2. 写最短可运行脚本import { chromium } from playwright; import { PlaywrightAgent } from midscene/web/playwright; const browser await chromium.launch({ headless: false }); const page await browser.newPage(); const agent new PlaywrightAgent(page); await page.goto(https://example.com); await agent.aiTap(登录按钮); // 视觉定位然后交给 Playwright 点击 await browser.close();PlaywrightAgent把 Midscene Agent 绑定到某个 Playwright 页面上模型负责认图找元素真正执行点击、输入的还是 Playwright 原生 API。3. 跑完你得到什么脚本结束后控制台会打印Midscene - report file updated: .../report/xxx.html用浏览器打开即可看到每一步的截图、AI 的决策过程和整体执行流。排查失败用例时翻报告比翻控制台高效得多。从截图到点击视觉定位的完整链路传统 Playwright 脚本把定位器写死成 CSS 选择器或 XPath前端一重构脚本就崩而 Midscene 的链路是另一条路Agent 先截取当前页面把截图连同你的自然语言描述一起发给视觉模型模型返回元素在画面中的位置再由 Playwright 执行点击或输入。操作完成后Midscene 会自动等待网络空闲默认超时 2000ms可用waitForNetworkIdleTimeout调整再进行下一步。这条链路带来一个直接好处定位不再和 DOM 结构强耦合。按钮换位置、文案微调、class 名重命名只要视觉特征还在脚本照样能命中。两种写法自动规划 vs 结构化工作流自动规划整句交给 AIaiAction接收一句自然语言自行拆解成一系列操作卡住时会重新规划await agent.aiAction(在搜索框输入 Midscene.js点击搜索并打开第一个结果);结构化工作流逐步控制关键链路建议拆开写先用aiLocate锁定元素再决定怎么操作用aiQuery让模型直接从屏幕提取结构化数据const searchBox await agent.aiLocate(顶部搜索输入框); await agent.aiInput(无线耳机, searchBox); await agent.aiPress(Enter); const items await agent.aiQuery( {title: string, price: number}[], 列表中的商品, );场景推荐写法说明临时验证、一次性脚本aiAction自动规划写得最快AI 自己规划并会重试回归测试、关键链路结构化工作流每步可控、报告可逐点审查页面数据抓取aiQuery直接产出 JSON免写选择器结果校验aiAssert一句自然语言描述预期界面状态集成进已有 Playwright 测试项目在playwright.config.ts里注册midscene/web/playwright-reporter再扩展 test fixture用例里就能拿到 Agenttest(搜索商品并校验结果, async ({ agentForPage, page }) { const agent await agentForPage(page); await agent.aiAction(在搜索框输入 Headphones 并回车); const items await agent.aiQuery( {title: string, price: number}[], 结果列表中的商品, ); expect(items.length).toBeGreaterThan(0); });fixture 还支持集中配置waitForNetworkIdleTimeout网络空闲等待超时与replanningCycleLimit规划重试上限。踩坑清单高频问题的排查步骤元素找不到 / 点空了先翻报告里失败那步的截图确认 AI 当时看到的到底是什么原生select下拉点不到时确认forceChromeSelectRendering处于开启状态默认开启选项面板才会出现在截图中。执行太慢每次 AI 决策都是一次模型调用。把大任务拆成短句确定性强、不需要认图的断言用回 Playwright 原生写法。截图卡在waiting for fonts to load直至超时CI 或容器环境常见设置PW_TEST_SCREENSHOT_NO_FONTS_READY1后重跑。首次拉浏览器镜像太久npx playwright install支持走镜像代理赶时间就只装 chromium。本地预览界面闪动viewport 的deviceScaleFactor和系统像素比不一致所致改成与window.devicePixelRatio相同的值即可不影响自动化本身。新标签页被抢回当前页PlaywrightAgent默认把target_blank链接改到当前页打开forceSameTabNavigation默认开启需要原行为时把它关掉并自行管理多标签页。学习路径文档、示例与源码Playwright 集成文档脚本、fixture、远程浏览器、自定义动作的完整参考快速上手指南用 Chrome 扩展零配置体验自然语言指令示例项目代码Playground 与 Midscene 结合的 runnable 样例PlaywrightAgent 源码看 Agent 如何绑定页面、如何实现网络空闲等待报告示例数据直观了解报告产物里都存了什么把定位器从选择器语言改写成人话之后测试脚本的维护成本会肉眼可见地降下来——页面还是可能被前端改坏但至少不会再因为一个 class 名重命名就全线飘红。【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考