本节摘要:Selenium 4 的特性清单可以归成三组:定位表达力的增强(相对定位器)、调试能力的升级(调试协议集成与双向通道)、执行底座的现代化(网格重构与标准协议默认化)。本节逐组评估"解决什么问题、值不值得采用",并给出整体演进方向的判断——新特性不是 checklist,每一项都对应你工程里的某笔旧账。
评估新特性的正确姿势不是读发布公告,而是先列自己工程的旧账,再看特性是否对得上。你的工程里有哪些旧账?按本册的线索回忆:定位偶尔要靠"在目标旁边的元素"来描述(3.1 的空间难题);失败排查常希望看到网络请求与控制台的实况(7.2 取证的天花板);网格运维有一堆组件要理解(6.3 的复杂度);协议升级要跟着改代码(2.1 的兼容负担)。Selenium 4 恰好各给了一把钥匙。
第一组:定位表达力。 相对定位器让"空间关系"成为合法锚点——"在搜索框上方的按钮""离购物车图标最近的加号"。3.1 曾提醒它不能进第一梯队,但特定场景(视觉布局明确、DOM 关系混乱)它是解药,采用建议是作为补充手段进入工具函数库,并持续警惕布局变化带来的脆性。
第二组:调试与双向能力。 对 Chrome 系浏览器,调试协议的官方集成让用例能直接触达网络请求、控制台输出、性能数据——7.2 取证四件套的天花板被抬高了一层:失败时不仅能看到页面长什么样,还能看到它发出了哪些请求、收到了什么响应。这是新版本里对回归工程价值最高的一组能力,建议优先采用——尤其是接口异常导致的页面异常,以前要靠猜,现在有实据。
driver.get("https://shop.example.com/checkout") logs = driver.get_log("browser") # 浏览器控制台日志 for entry in logs: if entry["level"] == "SEVERE": print("页面脚本严重错误:", entry["message"])
第三组:执行底座。 网格从"主控加节点"的松散结构重构成事件总线加分布式组件(6.2 图中的形态),会话队列与独立分发让扩容与观测更直接;协议侧则把 W3C 标准设为唯一模式,旧协议彻底退场——对新工程这是零成本的好事,对老工程意味着"该升级了"的最后通牒。
把版本特性放远看,平台演进有三条主线。主线一:向开发者工具靠拢。 调试协议集成、双向通道、更丰富的日志与网络能力,方向是把"测试脚本"与"开发者工具链"打通——自动化的取证能力向开发者的观测能力看齐。主线二:标准持续吸收现实。 W3C 标准不是静止的:新的能力声明、新的会话语义、各家浏览器的私有扩展不断被协商与收编。选标准生态的价值在时间维度兑现:平台的演进会替你的工程保鲜。主线三:与新生引擎的竞争性共存。 第 1 章的四引擎格局会长期存在,竞争的压力推动 Selenium 在体验层快速补课(驱动管理自动化、更好的等待、更现代的网格),这正是使用者的红利。
特性评估完是升级节奏。给存量工程三条纪律。小步升级:绑定库按小版本跟进,跳大版本升级是兼容性事故的头号来源;升级前先看变更记录里的弃用清单。升级先跑冒烟:绑定库升级后第一动作是冒烟集全绿,再进全量——第 7 章的流水线把这一步变成例行关卡。弃用即还债:公告里的弃用 API 就是你工程里的待还债务,按季度清一轮,别等到强删那天被迫大改。至于"要不要迁移到新引擎",回到 1.3 的三建议——存量资产、团队语言、浏览器覆盖,答案没变过。
特性评估落地为机制的样子:某团队把"特性采用"纳入季度复盘,每个季度固定半天。复盘的输入是三张清单——官方变更记录里的新特性、自己工程的旧账清单、当前采用的特性清单。产出是三个动作:采用哪几个(写明对应的旧账与验收标准)、观望哪几个(写明观望条件)、清偿哪几笔(弃用 API 按期删除)。
最近一个季度的真实产出值得参考。采用:调试协议集成——对应旧账"接口类失败取证困难",验收标准是搜索类用例的取证包新增网络请求记录;驱动管理自动化升级——对应"流水线驱动升级依赖人工"的旧账。观望:相对定位器——团队评估后认为现有锚点体系已覆盖场景,观望条件是"出现视觉布局明确而 DOM 关系混乱的新模块"。清偿:三处旧协议的遗留写法随升级删除。
这套机制的价值不在单季的决策质量,而在节奏:特性评估从"刷到文章时的冲动"变成"季度例会上的一页议程",工程既不错过红利,也不被浪潮推着走。演进的主动权,是用复盘节奏换来的。
问:特性公告里说得很美好,怎么验证它在我的场景里也美好? 用"最小验证用例"法:挑一条使用该特性的用例进冒烟集,跑两个版本周期——它稳定存活且确有收益则转正,收益不显或引入波动则撤下。特性评估的最后一步永远是你自己的数据,不是发布会的演示。
问:老版本还能撑,要不要升级? 算三笔账:安全账(旧版已知漏洞是否涉及)、兼容账(新版浏览器还能不能配旧驱动)、演进账(旧版是否已停进新特性)。前两笔任一告急都必须升级,第三笔决定升级的紧迫程度。升级本身按本节三纪律执行,就不必犹豫——最贵的从来不是升级动作,而是升级欠账后被迫的仓促大版本跳跃。
工具与版本都盘完了,最后一节做一件最实在的事:从现有工程里持续挤出性能与效率的收益——优化不是一次性项目,是按清单巡航的例行任务。