我们的团队从Angular JS开发开始,测试我们正在使用Jasmine-Karma-Protractor。争论的焦点是我们是否应该使用ID来访问DOM元素,或者使用XPATH / CSS / Binding来访问元素,因为Angular并没有真正强制使用ID。
这是一个最佳实践问题,我想知道社区推荐的内容。请分享您团队中遵循的策略。
感谢。
更新
在完成所有答案和评论之后,我意识到没有特别正确或错误的方法来做到这一点。 (我个人倾向于使用ID!)我们将召开会议讨论我们想要的方法,并决定是否使用ID。非常感谢你的帮助。
答案 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个选项。 :
如果您的html代码中没有修复ID!