我们的ui自动化团队正在寻求一种更好的方法来为自动化测试选择元素。我的想法是我们可以为每个可测试元素注入一个专用属性(比如说“ui-auto”)。该属性的值为:
我的问题是:
我应该提到我们正在使用棱角分明,我想到了 使用某种指令和/或服务将有助于自动化 此
我还应该说我不想使用“id”属性b / c我想在开发问题之间分离(id可以用于javascript)和qa关注点(选择元素为自动化测试)
答案 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更好,因为开发人员也依赖于他们,他们有时需要改变。应该隔离自动化的标识符。拥有这种分离真是太好了。