测试自动化html元素选择器。元素ID或DataAttribute

时间:2016-05-27 21:55:20

标签: html selenium selenium-webdriver automated-tests

我目前在UI测试自动化的元素上放置了一些ID。这些ID仅用于测试。我是否应该添加数据属性,而不是让未来的开发人员更具可读性(data-testHandle =" mybutton")或者我应该坚持使用ID。

w3.org说:

  

自定义数据属性旨在存储私有的自定义数据   页面或应用程序,没有更合​​适的   属性或元素。

我倾向于保留ID,但我的某些人认为未来的开发人员会认为ID并未被使用并将其删除。

这里有任何最佳做法。感谢。

2 个答案:

答案 0 :(得分:9)

这接近以意见为基础,这里的摘要应该有助于做出选择。

为什么要使用ID属性:

  • 这是一个常用,并且每个人都熟悉测试自动化定位元素的方式
  • 这通常是最快的方式来定位页面上的元素,因为selenium将其归结为执行document.getElementById(),这是由现代浏览器优化的(尽管通常是最终的表现 - 最终的UI测试并不重要)
  • 它是每个selenium语言绑定中的内置定位器
  • 如果您使用Firebug或Chrome开发者工具 - CSS选择器和XPath生成工具通常会尽可能使用元素的id来提供更强大的定位器
  • 您将构建更短的CSS选择器和XPath表达式。例如。 #myid .someclass而不是[automation-id=myid] .someclass

为什么要使用自定义属性:

  • 如果您要将automation-id属性添加到所有需要的元素,您可能会将其命名为/范围到测试自动化 - 每个人都会从属性名称知道这是什么。这意味着,您可以大大降低开发人员故意更改属性的机会,而不是id属性,这可以并且通常也用于应用程序客户端逻辑(引用this和{{ 3}}回答)

此外,这里有一些相关主题:

答案 1 :(得分:5)

我会使用data属性,因为您(或其他人)可能需要使用ID来稍后定位JS元素。除了测试之外,没有人需要将自定义数据属性作为目标。