向web应用程序的所有HTML元素添加ID属性?

向web应用程序的所有HTML元素添加ID属性?,html,w3c,w3c-validation,web-standards,Html,W3c,W3c Validation,Web Standards,目前,我正在使用RoR、MySQL、HTML、CSS和jQuery等构建一个web门户,我收到了自动化测试工程师的请求,要求向我的应用程序的所有元素添加ID属性(如果可能的话,还包括名称属性) 我对此感到困惑,也许我不确定这是否是一种好的做法,所以请任何人帮助我解决在我的应用程序的所有元素中添加ID属性的具体缺点/问题 谢谢, Sivaid允许可靠地查找页面上的特定元素,即使元素周围的标记发生变化(例如,为了视觉刷新) 另一方面,无关的ids会增加页面下载大小和内存占用 ids也应该是唯一的,因

目前,我正在使用RoR、MySQL、HTML、CSS和jQuery等构建一个web门户,我收到了自动化测试工程师的请求,要求向我的应用程序的所有元素添加ID属性(如果可能的话,还包括名称属性)

我对此感到困惑,也许我不确定这是否是一种好的做法,所以请任何人帮助我解决在我的应用程序的所有元素中添加ID属性的具体缺点/问题

谢谢,

Siva

id允许可靠地查找页面上的特定元素,即使元素周围的标记发生变化(例如,为了视觉刷新)

另一方面,无关的
id
s会增加页面下载大小和内存占用


id
s也应该是唯一的,因此为页面上的每个元素提供一个唯一的id是很困难的,但这可能不是测试自动化所需要的。

要进行可靠的前端测试,您需要能够识别某些元素,而无需使用过度特定的选择器(如果没有引用元素,则需要它)。一个选择器,如类型(4)的
body div:nth ul li:nth child(5)检查某个链接的
不仅明显难看,而且容易更改标记。一个小小的更改可能会破坏您测试套件的一半。为了避免这种情况,有几种方法可以让您的测试工程师的生活更轻松:

坏方法 将
id
s分配给所有页面元素

好办法 这是以下方法:

  • 使用新的语义标记,如、、和。
    使用这些元素,您可以构建
  • id
    s分配给重要/唯一的页面元素。谨慎使用它们,使用有意义的名称,并记住
    id
    s代表唯一的元素(在页面上只能出现一次)
  • 使用
    属性对具有类似特征的多个元素(例如导航元素、外部/内部锚定、交互元素等)进行分组
  • 避免使用
    name
    属性,或者仅在必要时使用。HTML5不推荐在某些元素(如
    )上使用此属性,因此我将完全避免使用它。考虑到您拥有的所有其他选项,没有必要使用此属性

  • 最后,您应该与您的测试工程师进行结对编程会话,以更好地了解他的需求,这样您就不会在页面上贴上无用的标记。

    为什么他希望每个元素都有一个ID?听起来您的自动化测试工程师需要学习选择器和/或XPath。我认为他可以很容易地选择e在编写自动化脚本时添加元素。如果基本输入字段中没有Id或名称,或选择字段,自动化将很困难。如果您在基本输入字段和容器中添加Id或名称,会更好。没有缺点。可能重复感谢@Nickolay为您提供的输入,我想知道“页面下载大小如何随更多元素的ID属性而增加?“,如果可能的话,你能解释一下吗,否则就分享一些参考链接吧。谢谢@Christoph的详细解释,我只是按照你的好方法去做的,我已经有了语义标记,所以正确地组织了它们,并为一些元素添加了ID属性,以处理我的场景并支持自动化工程师。