Angularjs 我应该使用ID来定位元素吗?

Angularjs 我应该使用ID来定位元素吗?,angularjs,selenium,protractor,end-to-end,e2e-testing,Angularjs,Selenium,Protractor,End To End,E2e Testing,从角度和量角器开始 写一些繁重的css选择器会让你感觉不对劲,当你改变一些东西时,这些选择器会在瞬间崩溃。 使用ID将使测试方法更容易 我还没有使用任何id属性进行样式设置。使用ID进行测试是否有我没有考虑过的缺点?一般规则是尽可能使用ID,假设它们在整个DOM中是唯一的,并且不是动态生成的: 尽可能使用ID属性。如果页面是有效的HTML,则 ID在页面上是唯一的。它们的速度非常快 每个浏览器中的分辨率和用户界面都会发生显著变化,但 您的脚本仍将定位该元素 有时ID不是正确的选择。动态生成的ID

从角度和量角器开始

写一些繁重的css选择器会让你感觉不对劲,当你改变一些东西时,这些选择器会在瞬间崩溃。 使用ID将使测试方法更容易


我还没有使用任何id属性进行样式设置。使用ID进行测试是否有我没有考虑过的缺点?

一般规则是尽可能使用ID,假设它们在整个DOM中是唯一的,并且不是动态生成的:

尽可能使用ID属性。如果页面是有效的HTML,则 ID在页面上是唯一的。它们的速度非常快 每个浏览器中的分辨率和用户界面都会发生显著变化,但 您的脚本仍将定位该元素

有时ID不是正确的选择。动态生成的ID是 当你和这样的人一起工作时,几乎总是错误的选择 网格控件。您依赖的id可能与特定的 行的位置,然后如果您的行发生变化,您就完蛋了

另外,通常尝试使用“面向数据”的方法:
by.model
by.binding
by.repeater
定位器,或者如果您依赖类名,请明智地选择它们:不要使用像
.col-xs-4
容器流体
这样的面向布局的类

另请参见以下相关主题:


无论如何,使用ID查找元素。这就是它们的用途!请确保您没有重复的ID,否则您可能会得到意外的结果。@SergioTulentsev>当涉及到以某种方式唯一地标识字段(jQuery选择器,…)时,我完全同意您的看法。CSS的最佳实践是避免使用ID选择器,因为它具有更高的特殊性。@Bartdude:当然,类用于样式,ID用于JS。