angularjs – ui自动化的唯一标识符

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

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

我的问题是:

>这是个好主意吗?欢迎更好的想法.
>现有惯例吗?
>什么是最好的实施方式
这个?

我应该提一下,我们正在使用棱角分明,我想到了
    使用某种指令和/或服务将有助于自动化
    这个.

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

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

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

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

点赞