Closed 。这个问题是基于意见的 。目前不接受答案。
我目前正在将一些 ID 放置在 UI 测试自动化的元素上。这些 ID 仅用于测试。我应该添加数据属性而不是可能使其对未来的开发人员更具可读性(data-testHandle =“mybutton”)还是应该坚持使用ID。
w3.org 说:
自定义数据属性旨在存储私有的自定义数据
没有更合适的页面或应用程序
属性或元素。
我倾向于保留 ID,但我的某些部分认为未来的开发人员会认为 ID 未被使用并删除它们。
这里有任何最佳实践。谢谢。
这接近于基于意见,这里是应该有助于做出选择的摘要。
你为什么要使用ID
属性:
这是一个common 进行测试自动化的每个人都熟悉定位元素的方法
这通常是fastest 定位页面上元素的方法,因为 selenium 会将其归结为执行document.getElementById()
它是由现代浏览器优化的(不过,通常端到端 UI 测试的性能并不重要)
it is a built-in 每个 selenium 语言绑定中的定位器
如果您使用 Firebug 或 Chrome 开发工具 - CSS 选择器和 XPath 生成工具通常会使用以下功能提供更强大的定位器id
尽可能使用元素的 s
您将构建更短的 CSS 选择器和 XPath 表达式。例如。#myid .someclass
相对于[automation-id=myid] .someclass
.
为什么要使用自定义属性:
如果你要添加,比如说,automation-id
属性到所有所需的元素,您将在某种程度上将其命名空间/范围扩展到测试自动化 - 每个人都可以从属性名称中知道它的用途。这意味着,您将大大减少开发人员故意更改属性的机会,而不是id
属性,它也可以并且通常也用于应用程序客户端逻辑(参考this and this answer)
另外,这里还有一些相关主题:
使用 Selenium 时向所有内容添加 ID 是标准做法吗?
使用 webdriver 查找元素的最佳且最快的方法是什么? By.XPath 或 By.ID 还是其他?为什么?
在 Selenium 测试中识别元素比 ID 更好的东西
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)