这接近于基于意见,这是应该有助于做出选择的总结。
为什么要使用ID
属性:
- 这是一种 常见 的和熟悉的给大家做测试自动化 的方式来定位元素
- 通常,这是在页面上定位元素的 最快 方法,因为硒会降低其执行速度
document.getElementById()
,而硒是由现代浏览器优化的(尽管,端到端UI测试的性能通常并不关键) - 它是每种硒语言绑定中的 内置 定位器
- 如果您要使用Firebug或Chrome开发者工具-CSS选择器和XPath生成工具通常会
id
尽可能使用元素的s 提供更强大的定位器 - 您将构建较短的CSS选择器和XPath表达式。例如
#myid .someclass
反对[automation-id=myid] .someclass
。
为什么要使用自定义属性:
- 例如,如果将
automation-id
属性添加到所有所需的元素,则将在某种程度上对名称空间/作用域进行测试自动化-每个人都将仅从属性名称知道这是什么。意思是,您将大大减少开发人员有意更改属性的可能性,而不是id
属性,属性也可以并且通常也用于应用程序客户端逻辑(请参阅此和此答案)
另外,这是一些相关的线程:
- 使用Selenium时,是否在所有标准实践中都添加了ID?
- 测试中识别元素的能力胜于ID


![测试自动化html元素选择器。元素ID或DataAttribute [关闭] 测试自动化html元素选择器。元素ID或DataAttribute [关闭]](http://www.mshxw.com/aiimages/31/447872.png)
