ui自动化的唯一标识符

时间:2015-03-18 21:12:20

标签: angularjs ui-automation

我们的ui自动化团队正在寻求一种更好的方法来为自动化测试选择元素。我的想法是我们可以为每个可测试元素注入一个专用属性(比如说“ui-auto”)。该属性的值为:

  • 独特
  • 持久性(不会在会话或页面加载时发生变化,以免破坏测试)
  • 可预测(遵循一些命名约定,具体取决于操作类型,位置等)

我的问题是:

  1. 这是个好主意吗?欢迎更好的想法。
  2. 这是否存在惯例?
  3. 实施的最佳方式 这个?
  4. 我应该提到我们正在使用棱角分明,我想到了     使用某种指令和/或服务将有助于自动化     此

    我还应该说我不想使用“id”属性b / c我想在开发问题之间分离(id可以用于javascript)和qa关注点(选择元素为自动化测试)

2 个答案:

答案 0 :(得分:1)

在我们的实现中,我们向DOM元素添加了一个data-awt属性,该值由上下文(页面和模式)类型和唯一字符串组成。当我们使用EXTJS库时,我们的类型是xtype,唯一的字符串是组件名称或文本属性。上下文是开发人员控制的,通过在最上面的父项上放置一个唯一属性,所有子项都将其用作上下文。

在实践中,我们最终会得到数据awt值,例如devicesListing-button-edit,deviceDetails-displayfield-name,deviceDetailsEditWindow-textfield-name。

我们发现依赖于css,id或其他属性并不可靠且可预测,因为我们不想在有任何UI更改时重写我们的测试。现在,如果现有元素更改其名称,则测试仅需要更新(例如,PM表示名称字段现在应该使用来自DTO的'客户数据)。

答案 1 :(得分:1)

您还可以使用元素的类,并提供一个前缀为" auto _"的唯一标识符。或" t _"。

协议存在,如果有人用该前缀更改类名,测试将中断。

@ o4ohel我同意不使用ID更好,因为开发人员也依赖于他们,他们有时需要改变。应该隔离自动化的标识符。拥有这种分离真是太好了。