ARTICLE · 1124341
AI 猜的定位器为什么总坏?有工具让它在写进代码前先验一遍
AI 猜的定位器为什么总坏?有工具让它在写进代码前先验一遍
AI 帮你写完一条 UI 自动化脚本,一运行就报错:找不到元素。 去页面上一看,按钮明明在,只是文案从「立即提交」改成了「确认提交」。 AI 当初是按文案认这个按钮的,文案一改,脚本当场就瞎。 逻辑没错,是"怎么认出那个元素"写错了。 这种"怎么认出页面元素"的写法,业内叫定位器(脚本里用来指认"我要点的是页面上哪一个"的那串描述)。 麻烦在于:AI 生成时基本靠"看一眼"猜,像模像样,但没人验过。 SelectorsHub 是专做定位器的老牌浏览器插件,官方页自述有 200 万+ 测试人员在用。 9 月 29 日,做这个插件的团队把引擎单独做成了MCP(让 AI 助手能调用外部工具的一套通用接口),让它去真实页面上验,而不是靠猜。 装法就一行: 要求 Node.js 18+ 和 Chrome 或 Edge,装完重启 AI 助手,官方说约 1 分钟。 装完不学新语法,还是说人话: 「把登录页的登录按钮,给我一个稳定的 Playwright 定位器」 「我这条老脚本报错了,//button[@id='submitBtn'] 不管用了,帮我修」 「//div[@class='row']//a 在这个页面上唯一吗」 背后是 9 个工具:打开页面、列出所有可交互元素、生成定位器清单、校验(给匹配数量、是否唯一、有没有脆弱性告警)、修坏掉的定位器、把整页元素整理成一份代码(11 种框架和语言组合可选)。 出处是项目 GitHub 仓库与 npm 页面,首次提交 2026 年 9 月 29 日。 两个数字:生成覆盖 11 种框架/语言组合;插件自述"200 万+ 测试人员在用"——这是厂商自述,非第三方统计。 校验口径:每个推荐定位器都在真实页面上验一次能否唯一匹配。 必须说明:官方没有公布任何"准确率""省了多少时间"的基准数字,也没说"唯一匹配"在动态页面上能稳多久。 门槛很低,三步: 前置知识:能按 F12 看懂页面结构就够,不用会写代码。 一句提醒:登录状态存在浏览器配置里,建议用单独的测试账号,别对着生产环境试。 适合:定位老出问题、UI 频繁改版、手里压着谁都不敢动的老脚本——省掉一大块纯体力活。 别用:它只解决"怎么找到元素",不解决"该测什么"。业务断言、测试数据、异常场景一样省不了。碰到钱、权限、审批这类不能出错的流程,更别指望它兜底。 坑一:唯一匹配不等于稳定。校验只证明"此刻这个页面上只匹配到一个元素"。明天换掉 id、改掉文案,它照样认不出——项目页自己也写明了这一点。 坑二:直接把定位器合进代码,不看它锚在什么上面。同一个按钮,锚在"第 3 个 div"也能过校验,下次加个元素就全乱;锚在"文案是确认提交的那个按钮"才抗改。工具只告诉你"唯一",不说"哪个更好选"。 坑三:以为装上它,定位器就不用管了。你省掉的是敲字,不是判断。 坑四,也最要紧:别在方向上选错。Playwright 从 1.56 版起自带 healer(自愈),走的是"不校验、坏了再修"。 10 月 2 日 QA.tech 在 dev.to 的文章把代价写得很直白(做同类工具的公司,观点带立场):自愈能把该报的错修成通过——改等待绕过偶发问题、把测不下去的用例标成跳过、少断言一点让用例变绿。 那句话挺扎心:你可能只是把修定位器的活,换成了修自愈结果的活,而且新这种是悄悄失败的。 "别让定位器坏"一点都不新。老规矩是:优先按角色、按文案这种语义找元素,少用自动生成的 id,关键元素让开发加个标记。以前全靠人自觉,现在有工具帮你强制执行。 要不要学?要,这是我见过学习成本最低的一档:装一分钟,用它会说人话就行。 但真正值得花时间的是"定位器为什么会坏"的判断力——工具能验到"此刻唯一",验不到"三个月后还唯一"。这恰恰是功能测试人的主场:你比自动化工程师更清楚这个按钮会不会被改。 UI 脚本挂掉,多数时候不是逻辑错,是定位器。写进代码前先验一遍,和坏了让 AI 自己修,是两条路——省事的那个,可能把失败悄悄改成通过。 你维护的 UI 脚本最近一次挂掉,是定位器失效,还是别的原因?
本文信息来源于公开技术资料,观点仅代表作者个人判断。

背景
它是什么 / 解决什么问题
它做了什么
claude mcp add selectorshub -- npx -y selectorshub-mcp
数据 / 效果
你能怎么用
确认有 Node.js 18+ 和 Chrome(或 Edge),跑上面那行命令,重启 AI 助手,官方说约 1 分钟。 别一上来生成整套脚本。挑你维护得最痛苦的一条用例,只让它给 3 个元素各出定位器,再问"这几个是唯一的吗"。 找最旧、最容易坏的那条用例让它修一次,重点看它给的新写法你认不认。