写 UI 自动化时,需要贯穿始终的核心“思想”可以归纳为 10 条。它们不是具体 API,而是决定脚本能否长期活下去的“底层逻辑”。
-
ROI 第一
只把“高频、核心、稳定”的功能拉进自动化;一次性或经常改动的功能手工性价比更高 。 -
分而治之 + 大道至简
元素定位先找“不会变”的明显特征(id、data-testid),再按“区块→子节点”逐层缩小范围,拒绝一行超长 XPath 。 -
脚本独立
用例之间零依赖:登录失败不影响下单,任何一条用例都能单独重跑 。 -
失败即快照
断言失败立即截图 + 打印 page source,调试成本从小时级降到分钟级 。 -
等待是信仰
强制 sleep 一律禁止,统一用显式等待(WebDriverWait)(或智能等待),保证 30 ms 的 Ajax 也不漏 。 -
页面对象化(POM)
一个页面=一个 Class,元素私有,功能暴露;UI 变时只改一处,用例层零感知 。 -
业务语义封装
把“输入用户名/密码/点击登录”三步封装成login(user, pwd),用例里只写login("admin","123456"),不暴露内部元素 。 -
数据与代码分离
账号、URL、测试数据全扔 YAML/JSON/CSV,脚本里读变量;换环境只需换文件,无需改代码 。 -
失败重跑与幂等
每条用例跑完自动“回到原点”(登出、清空购物车),配合重试机制,让 CI 半夜也能稳定出报告 。 -
渐进式维护
不用一次性写出 100 % 覆盖的庞然大物;先覆盖主流程,边跑边抽象公共方法,边补断言,让框架和用例一起“长”出来 。
把这 10 条思想落到代码层面,再配合合适的框架(Selenium、Playwright、Cypress 等),就能写出“白天跑 CI、晚上也敢跑、UI 小改不动刀”的自动化套件。

340

被折叠的 条评论
为什么被折叠?



