我目前在UI测试自动化的元素上放置了一些ID。这些ID仅用于测试。我是否应该添加数据属性,而不是让未来的开发人员更具可读性(data-testHandle =" mybutton")或者我应该坚持使用ID。
w3.org说:
自定义数据属性旨在存储私有的自定义数据 页面或应用程序,没有更合适的 属性或元素。
我倾向于保留ID,但我的某些人认为未来的开发人员会认为ID并未被使用并将其删除。
这里有任何最佳做法。感谢。
答案 0 :(得分:9)
这接近以意见为基础,这里的摘要应该有助于做出选择。
为什么要使用ID
属性:
document.getElementById()
,这是由现代浏览器优化的(尽管通常是最终的表现 - 最终的UI测试并不重要)id
来提供更强大的定位器#myid .someclass
而不是[automation-id=myid] .someclass
。为什么要使用自定义属性:
automation-id
属性添加到所有需要的元素,您可能会将其命名为/范围到测试自动化 - 每个人都会从属性名称知道这是什么。这意味着,您可以大大降低开发人员故意更改属性的机会,而不是id
属性,这可以并且通常也用于应用程序客户端逻辑(引用this和{{ 3}}回答)此外,这里有一些相关主题:
答案 1 :(得分:5)
我会使用data属性,因为您(或其他人)可能需要使用ID来稍后定位JS元素。除了测试之外,没有人需要将自定义数据属性作为目标。