Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ui自动化的唯一标识符_Angularjs_Ui Automation - Fatal编程技术网

Angularjs ui自动化的唯一标识符

Angularjs ui自动化的唯一标识符,angularjs,ui-automation,Angularjs,Ui Automation,我们的ui自动化团队正在寻求一种更好的方法来为自动化测试选择元素。我的想法是,我们可以为每个可测试元素注入一个专用属性(比如“UIAuto”)。此属性的值为: 独特的 持久性(不会跨会话或页面加载进行更改,以免中断测试) 可预测(根据动作类型、位置等遵循某些命名约定) 我的问题是: 这是个好主意吗?欢迎提出更好的想法 这方面有没有现行的惯例 实施的最佳方式是什么 这个 我应该提到的是,我们正在使用angular,我认为 使用某种指令和/或服务将有助于自动化 这个 我还应该说,我不想使用“id

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

  • 独特的
  • 持久性(不会跨会话或页面加载进行更改,以免中断测试)
  • 可预测(根据动作类型、位置等遵循某些命名约定)
我的问题是:

  • 这是个好主意吗?欢迎提出更好的想法
  • 这方面有没有现行的惯例
  • 实施的最佳方式是什么 这个 我应该提到的是,我们正在使用angular,我认为 使用某种指令和/或服务将有助于自动化 这个


    我还应该说,我不想使用“id”属性b/c,我希望在开发关注点(id可能用于javascript)和qa关注点(为自动测试选择元素)之间进行分离。

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

    在实践中,我们最终得到了数据awt值,如DeviceListing button edit、deviceDetails displayfield name、deviceDetailsEditWindow textfield name


    我们发现依赖css、id或其他属性是不可靠和不可预测的,因为我们不想在UI发生变化时重写测试。现在,仅当现有元素更改其名称时,测试才需要更新(例如,PM表示名称字段现在应使用DTO中的“客户”数据)。

    您还可以使用元素的类,并提供一个前缀为“auto_uu”或“t_uu”的唯一标识符

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


    @o4ohel我同意不使用ids更好,因为开发人员也依赖于ids,他们有时需要更改。应隔离自动化的标识符。很高兴有这样的分离

    什么是测试框架?量角器?您可能不需要id,而是需要一个不变的特定属性,如绑定、ng模型、类层次结构等。否则,我会手动添加id以确保您所做的操作,这本身并不是一个坏主意,特别是如果您决定对此类ID进行约定,表明它们仅用于测试,不应被其他JS代码使用。谢谢@floribon。测试框架是selenium(尽管我的建议是Digrator:)Digrator使用selenium自动化浏览器,但为您提供了一个良好的角度框架来运行jasmine测试,这并不是不兼容的,可以为您节省很多麻烦。Downvoter:也许您想解释一下downvote,与其对分数低的人投快速的否决票,还不如同意你们的观点,这是我对平衡的赞成票,如果父母有几个相同类型的孩子呢。。。在没有ID的情况下如何选择它们?您可以指定顺序,但这会使def易受UI更改的影响。@Xena在本例中,我们为在渲染时读取的子项数据awt后缀添加了另一个属性(请记住使用EXTJS),并将其附加到已制定的字符串中,这对于以数据awt结尾的放射组中的元素列表非常有用=“上下文类型radiogroup radiooption”,其中radiooption是开发人员在radiogroup中的子项上放置的数据awt后缀