目前,我正在使用 RoR、MySQL、HTML、CSS 和 jQuery 等构建 Web 门户,我的自动化测试工程师要求我向我的应用程序的所有元素添加 ID 属性(如果可能的话,还包括 NAME 属性)。
我很困惑这样做,也许我不确定这是否是一个好习惯,所以任何人都可以帮助我解决向我的应用程序的所有元素添加 ID 属性的具体缺点/问题。
谢谢,
湿婆
目前,我正在使用 RoR、MySQL、HTML、CSS 和 jQuery 等构建 Web 门户,我的自动化测试工程师要求我向我的应用程序的所有元素添加 ID 属性(如果可能的话,还包括 NAME 属性)。
我很困惑这样做,也许我不确定这是否是一个好习惯,所以任何人都可以帮助我解决向我的应用程序的所有元素添加 ID 属性的具体缺点/问题。
谢谢,
湿婆
要进行可靠的前端测试,您需要能够在不使用过于具体的选择器的情况下识别某些元素(如果您没有参考元素,则需要这样做)。喜欢body div:nth-of-type(4) ul li:nth-child(5) a
检查某个链接的选择器不仅明显丑陋,而且还容易改变标记。一个小小的改变可能会破坏你一半的测试套件。为了避免这种情况,有几种方法可以让您的测试工程师的生活更轻松:
将id
s 分配给您的所有页面元素...
是以下方法:
<nav>
, <header>
, <footer>
, <main>
, 和<section>
. id
s 分配给重要/独特的页面元素。谨慎使用它们,使用有意义的名称,并记住id
s 代表独特的元素(可能只在页面上出现一次)!class
属性对多个具有相似特征的元素进行分组(例如导航元素、外部/内部锚点、交互元素……)name
使用属性,或仅在必要时使用。HTML5 在某些元素上弃用了这个属性,比如<a>
,所以我会完全避免它。没有必要考虑您拥有的所有其他选项。最后,您应该与您的测试工程师进行一次结对编程会议,以更好地了解他的需求是什么,这样您就不会在页面上贴上无用的标记。
s 允许可靠地找到页面上的id
特定元素,即使元素周围的标记发生变化(例如,用于视觉刷新)。
另一方面,无关id
的 s 会增加页面下载大小和内存占用。
id
s 也应该是唯一的,因此为页面上的每个元素提供一个唯一的 id会很困难,但这可能不是测试自动化所需要的。