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

Ray*_*ess 4 html selenium automated-tests selenium-webdriver

我目前正在为UI测试自动化元素添加一些ID.这些ID仅用于测试.我应该添加数据属性,而不是让未来的开发人员更容易阅读(data-testHandle ="mybutton"),或者我应该坚持使用ID.

w3.org说:

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

我倾向于保留ID,但我的一些人认为未来的开发人员会认为ID没有使用并删除它们.

这里有任何最佳实践.谢谢.

ale*_*cxe 9

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

为什么要使用ID属性:

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

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

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

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

  • @JimitPatel 没有足够的信息来回答你,而且这不是提问的正确地方。请单独发帖,提出问题并提供更多信息。 (2认同)

Ken*_*pek 6

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

  • 另一方面,通过`id`定位元素是最快的. (2认同)