使用元素名称/ id作为使用Protractor测试AngularJS的元素

时间:2016-06-06 06:18:33

标签: angularjs selenium testing protractor

我们的团队从Angular JS开发开始,测试我们正在使用Jasmine-Karma-Protractor。争论的焦点是我们是否应该使用ID来访问DOM元素,或者使用XPATH / CSS / Binding来访问元素,因为Angular并没有真正强制使用ID。

这是一个最佳实践问题,我想知道社区推荐的内容。请分享您团队中遵循的策略。

感谢。

更新

在完成所有答案和评论之后,我意识到没有特别正确或错误的方法来做到这一点。 (我个人倾向于使用ID!)我们将召开会议讨论我们想要的方法,并决定是否使用ID。非常感谢你的帮助。

3 个答案:

答案 0 :(得分:4)

当然你应该使用ID。这将使您的测试更容易编写和阅读,更快,更重要的是,更强大:每次页面上的标记因任何原因(样式,新布局等)发生变化时,测试都不会发生变化。 )。

更明确地说"找到菜单项'客户'"而不是说"找到包含在页面的第二个li中的第三个ul中的第4个div"。

答案 1 :(得分:1)

由于我已经在Protractor工作了2年并从头开始设计了良好的POM测试框架,我建议您在Angularjs应用程序的下面订购:

订单:

by.model()

by.repeater()

by.css()

by.id()

by.name()

by.xpath() - 最少偏好

答案 2 :(得分:0)

我还可以为现有答案添加2个选项。 :

  • by.className();
  • by.tagName();
  • by.cssSelector();

如果您的html代码中没有修复ID!