(求虐)受不了前端天天改,自动化脚本天天崩!小弟肝了个工具,用“语义”干掉XPath,大佬们看这思路对吗?

各位搞 Web 自动化测试的大佬们,小弟先吐个槽:

不知道大家是不是也这样,现在前端迭代快得飞起,UI 稍微一改版,之前辛辛苦苦写的自动化脚本,元素定位(Locator)就全线崩溃!

结果就是,大半天时间不是在写新 Case,全TMD在维护旧脚本,改各种 XPath、CSS Selector,人都麻了...

这活儿的痛点简直不要太多:

  1. 门槛高: 想让业务 QA 参与,但手写 Python 脚本的门槛直接把人挡在门外。
  2. 效率低: 从需求分析到脚本产出,流程又臭又长,跟不上敏捷开发。
  3. 维护难: (核心槽点)元素定位太"脆"了! 前端稍微换个 DIV 结构,或者改个 Class,定位就失效,脚本就得改,烦得要死。

我的("作死")思路

实在受不了这种"面向 XPath 编程"的苦日子了,小弟花了几个月业余时间,关起门来肝了一款工具

我给它的定位是:一个 AI 驱动的、低代码自动化测试平台

核心思路很简单:

  1. 用"大白话"提效(AI): 让不懂代码的 QA,用自然语言(比如:"登录系统,用户名A,密码B")就能生成可执行的 Python 脚本。

  2. 用"语义化"抗变更(核心引擎): 这才是我想解决的核心问题! 我希望彻底告别脆弱的 XPath/CSS。

    • 比如,我封装了一个引擎,当你想操作一个多级菜单时,你根本不需要去 F12 找元素
    • 你只需要输入(或在脚本里调用):"首页" > "系统配置" > "用户管理"
    • 系统就会自动、依次地去点击这些菜单项。无论前端怎么改版,只要菜单的文字不变,脚本就永远有效!
  3. 它又不能是个"黑盒": 无论是 AI 生成的,还是引擎调用的,最终都是标准的 Python + Playwright 脚本。专业大佬随时可以接管,进行二次开发或调试。


"Show Time"(求轻喷)

光说不练假把式,直接上图(和 GIF),大佬们看看这功能是不是你们想要的:

1. 亮点一:用"嘴"写用例(自然语言 -> Python 脚本)

我直接输入 Prompt,它(调用我配置的 LLM 接口)就能自动生成 Playwright 脚本。

[ GIF 动图 演示 1 ]

  • 动图内容: 在 Prompt 输入框,输入"用例名称'项目演示-演示登录go入门指南并进入指定章节',访问'go.timpaik.top/directory.html',在目录>起源与发展菜单单,等待10秒,使用assert断言1等于1",点击发送按钮。平台将内容发送至配置的AI模型,并将模型返回的内容翻译成可执行的用例脚本执行,执行完成后可将用例进行归档至项目用例下。

2. 亮点二:用"语义"告别 XPath(这才是重点!)

看这里,我不用关心元素定位。比如我要操作菜单(其实也能操作复杂的web中form)。

[ GIF 动图演示 2 ]

  • 动图内容: 看上一个动图操作,浏览器界面自动完成访问和点击动作"https://go.timpaik.top/directory.html"、调用一个smart.click("目录">"起源于发展")这样的函数,然后了这一系列点击。请注意整个过程我只参与自然语言输入,并没写定位符,它却点对了目标元素

3. 不只是玩具:内置的编辑器和用例管理

生成的脚本不是摆设,可以直接在平台里组织、管理、运行,也支持二次编辑。

[ GIF 动图演示 3 ]

  • 动图内容: 生成的用例执行完成后进行归档到项目用例库中,当然少不了测试报告(暂时使用pytest-html)。中间是 Python 脚本编辑器(显示行号和高亮),可对生成的用例进行编辑优化,可以看到不需要关心元素定位。

** 这里少一个动图,不知道为啥插入的时候无法更新,睡觉先,明天再搞 **

睡醒了,补图补图:


技术实现(欢迎大佬们开喷这部分)

为了让大佬们喷得有理有据,我简单贴下我的(简陋)架构。这玩意儿是个桌面应用(用 Tkinter 打包的):

scss 复制代码
┌──────────────┐
│ 表现层 GUI   │ → Tkinter + ttkbootstrap (图它打包方便)
└─────▼────────┘
      │
┌──────────────┐
│ 业务逻辑层   │ → 用例生成 / 脚本执行 / 报告管理
└─────▼────────┘
      │
┌──────────────┐
│ 核心API引擎  │ → Playwright封装 + 【语义定位引擎】 + 链式调用
└─────▼────────┘
      │
┌──────────────┐
│ AI集成层     │ → OpenAI / Gemini / Kimi 等大模型接口 (可配置)
└─────▼────────┘
      │
┌─────▼────────┐
│ 数据持久层   │ → YAML / JSON / .py 文件 (轻量级)
└──────────────┘

几个设计上的考虑:

  • GUI 为啥用 Tkinter? 主要是图个简单、跨平台、打包成 .exe 方便。ttkbootstrap 库让它颜值勉强能看(内置了深色/浅色主题)。
  • 核心引擎怎么搞的? 底层还是 Playwright。重点就在于我封装的**"语义定位引擎"**。它会根据 "A > B > C" 这种输入,结合 DOM 结构去智能分析和查找元素(比如基于文本、A 标签、父子关系等多种策略),而不是依赖单一的 XPath。目标就是提高脚本的"健壮性",减少维护。

真正"求虐"的来了!

小弟目前还在埋头开发,发帖就是想在"闭门造车"的路上听听劝,看看这个方向对不对。

想请教各位大佬几个问题:

  1. 这个思路(AI 生成 + 语义定位 + Pro-Code)大家觉得靠谱吗? 还是说又是一个"重复造轮子"的玩具?
  2. (灵魂拷问)大家对这种 "首页 > 系统配置" 的"语义化"操作方式怎么看? 会觉得它实用,还是更信任自己手写的 XPath/CSS?
  3. 大家对"AI 生成脚本"的容忍度咋样? 是希望它 100% 准确,还是能帮我生成个 70% 的框架、我再改改就行?
  4. 大家觉得 Web 自动化测试里,还有啥是巨恶心的痛点?

如果大佬们觉得这个玩意儿还有点意思,或者想喷我几句,都欢迎留言。

可以先 Mark 一下这个帖子,等我手续搞定了,一定第一时间把试用包和(可能的)开源地址放出来,再请大家使劲"鞭尸"!

相关推荐
中杯可乐多加冰1 天前
基于网易CodeWave智能开发平台构建宝可梦图鉴
深度学习·低代码·ai·数据分析·数据采集·无代码·网易codewave征文
FIT2CLOUD飞致云1 天前
测试跟踪步骤描述用例交互优化,MeterSphere开源持续测试工具v2.10.26 LTS版本发布
软件测试·测试用例·测试·metersphere
葡萄城技术团队2 天前
低代码平台与办公软件:协同进化,重塑数字化办公新生态
低代码
霍格沃兹_测试2 天前
软件测试 | 测试开发 | 利用 pytest 玩转数据驱动测试框架
测试
mudtools2 天前
解放双手!使用Roslyn生成代码让你的 HTTP 客户端开发变得如此简单
低代码·c#·.net
Alfred king4 天前
Dify chat模型streaming转为文字解决方案
低代码·agent·dify
葡萄城技术团队4 天前
活字格低代码:让业务流程设计从 “图纸” 到 “落地” 零 IT 转译
低代码
Apifox4 天前
如何在 Apifox 中使用 OpenAPI 的 discriminator?
前端·后端·测试