Shadow DOM中无href的<a>标签丢失link角色的原因咨询
无href属性的标签丢失link角色是预期行为
这是完全符合HTML规范的预期行为,并非Bug。
- 原生HTML中,
<a>标签只有在带有href属性时,才会被浏览器识别为具备link语义角色的可交互元素。如果没有href,它本质上就是一个普通的行内容器,和<span>的语义完全一致,不会被赋予任何链接相关的角色。 - 你用
screen.getByShadowRole('link')做测试时,因为元素已经失去了link角色,所以查找失败是必然的结果。
针对你的场景,可以参考以下处理方式:
- 若元素确实需要作为可跳转链接使用,确保
href始终有有效值——比如当没有实际跳转目标时,可以设置为href="javascript:void(0)",或者根据业务逻辑赋予合适的占位值。 - 若只是需要链接样式但不需要跳转功能,直接改用
<span>或其他元素,通过CSS模拟链接的视觉样式,避免语义上的混淆。 - 若必须保留
<a>标签且允许无href的情况,测试时换用其他定位方式,比如通过文本内容screen.getByText('link'),或者结合元素的类名、ID等属性进行查找。
内容的提问来源于stack exchange,提问作者Christof Buechi
相关产品推荐
相关产品推荐

