先给结论:不要只在一个页面点一次就判定链接组件合格,而要把“链接组件”拆成可复现的输入条件,分别构造最小验收样例。若同一组件在列表页、详情页或弹窗中表现不同,通常不是链接标签本身失效,而是所在容器的布局、事件层、路由方式或内容注入时机不同。正确做法是先固定两个对照条件,分别记录链接的解析结果、可点击区域和跳转目标,再决定是修组件、修页面容器,还是把该场景排除在通用验收之外。
同一段 HTML链接用法,在服务端直接输出的页面里和在客户端脚本生成后再插入的页面里,验收方式不同。前者可以在源码中直接检查 <a href="..."> 是否完整;后者必须等组件挂载后再检查最终 DOM,因为初始源码里可能只有占位容器。
选择依据很简单:如果链接目标在页面首次响应时就存在,用静态样例验收;如果链接依赖接口数据、权限判断或前端路由,则用运行时样例验收。把两者混在一个样例里,失败时无法判断是数据没到、组件没渲染,还是链接被父级拦截。
实施动作:为同一个组件准备两个最小页面,一个直接写入链接,一个由脚本延迟插入链接。分别记录三件事——最终 href 值、可点击矩形范围、点击后实际到达的地址。若静态页通过而运行时页失败,下一步应查数据绑定和渲染时机,而不是改链接标签写法。
列表页里链接文字短、周围留白大,点击容易命中;详情页里链接被放进带内边距的卡片或绝对定位层中,视觉上仍是同一组件,实际可点击区域却可能被压缩或覆盖。这类差异不能靠“看起来能点”来验收。
可区分的原因有三种:父容器设置了 overflow 或固定高度,导致链接被裁切;相邻元素使用绝对定位或负外边距,压住了链接的一部分;伪元素覆盖在链接上方,拦截了点击。三者的证据不同,处理动作也不同。
只有确认点击落点命中链接本身,才能把问题归到链接组件;否则应先修页面容器。这个顺序会直接影响下一步:修容器后仍失败,才值得进入组件层面的排查。
同一个组件在营销页可能输出普通 <a href>,在应用内页可能被前端路由接管,改为阻止默认跳转后由脚本切换视图。两种条件下的验收样例不能共用同一套断言。
假设一个场景:组件接收目标地址参数,在静态页输出完整 URL,在单页应用内输出站内路径,并由路由监听点击。此时要分别验证:普通链接是否产生整页导航;路由链接是否阻止默认行为并更新地址栏;刷新后是否仍能到达同一内容。数字只用于说明比较方法,例如记录点击前后地址栏变化和页面主体是否重载,而不是承诺任何加载速度。
若普通链接正常而路由链接异常,下一步应检查路由注册和事件绑定,而不是重写 href。若两者都异常,再回到链接解析和权限判断。
这套样例的价值在于:它把“同一组件表现不同”拆成可分别验证的条件,避免用一次点击覆盖所有页面。例外必须写清,例如弹窗内链接依赖打开时机、权限页链接依赖登录状态,这些场景不能直接照搬静态页的验收结论。
当新增页面只改变文案、不改变容器结构、渲染方式和路由机制时,可以复用已有样例;当页面引入了新的布局约束、新的注入时机或新的跳转机制时,必须新增对照样例。判断依据是输入条件是否变化,而不是页面数量是否增加。这样既能覆盖真实差异,也不会把验收无限扩张到每个页面。