我项目中的测试人员希望每个页面元素都有一个唯一的HTML ID,以便更轻松地进行自动化测试。
我很难记得这样做,因为我不需要ID来进行开发。我怎样才能确保我不忘记?
我想也许像Checkstyle这样的东西可以告诉我,甚至是IntelliJ中的“检查” - 但它们似乎都不支持这种功能。
有什么想法吗?
答案 0 :(得分:8)
我想到了两个想法:1。让他们告诉你什么没有。如果这不起作用,2。获得新的测试人员。 ;)
什么样的测试引擎在每个元素上都需要Id?
答案 1 :(得分:5)
作为日常工作从事测试自动化的人: 向与交互的元素添加唯一ID的请求将为自动化测试套件增加很多稳定性。
为DOM中的每个元素添加ID当然是一个荒谬的开销。
大多数框架都能够使用CSS或XPath甚至图像匹配。当开发人员和测试人员之间没有通信线路时,这是一个很好的后备。但是,如果这些团队之间存在沟通 - 添加这些团队是有意义的。
作为一个开发团队 - 你应该从这些测试中获得很多价值。在将更改部署到测试环境后,它们应该为您提供几乎即时的反馈。如果测试很有趣 - 他们的价值将会直线下降。让测试尽可能可靠,这符合每个人的利益。在这方面,良好的身份证是非常宝贵的。
正如笔记一样 - 自动生成ID的建议充满了风险。这些很容易给人一种虚假的安全感,可能比没有任何情况更糟糕。关键是ID必须稳定可靠。如果将新元素添加到上面的DOM中,则递增生成的ID将会更改。如果对标签等进行小的更改等,则基于其内容的哈希的ID将会改变...
另外作为测试人员 - 花半小时写一个xpath来唯一地识别一个元素是一个很少的时间使用,如果添加ID将花费开发人员5分钟..... :)
答案 2 :(得分:4)
如果你想在javascript中使用某些东西,可以使用jQuery。
$("*:not([id])").css('backgroundColor', 'yellow');
在没有ID黄色的情况下为任何颜色着色,在那里您只需使用Firebug浏览源代码并查找颜色为黄色的内容。
$.each($(*:not([id])), function(){
$(this)
.css("backgroundColor", "yellow")
.addClass("no-id");
});
答案 3 :(得分:3)
在每个页面上的每个元素上设置ID对我来说似乎是一个糟糕的计划。
答案 4 :(得分:3)
工具不支持这个的原因是它是一个相当奇怪的请求。我去过那儿。
上面的jQuery解决方案会让他们得到他们所要求的东西 - 但也许不是他们(或者你,作为一个团队)所需要的。我肯定会回到测试人员那里(不要解雇他们!),并试着多了解一下这个要求。它真的是每个元素吗?一起看几页,看看有什么遗失 - 也许他们只是沮丧,需要比他们更多的ID。
很难相信测试工具只能通过ID来处理DOM元素;看看是否有其他选项可以同样有效,以及您可以自愿添加哪些选项来支持它们。 (它肯定比在任何地方添加ID更容易。)
最后,如果ID是唯一的方法,请考虑根据比元素数更永久的东西来分配ID-- innerHTML的某种散列,元素的父+索引,或类似的东西。< / p>
另一件要考虑的事情 - 如果你需要生成ID--就是服务器端。根据您所使用的语言,可能更容易在那里执行,并且不会破坏浏览器性能。
祝你好运!答案 5 :(得分:1)
向每个元素添加id根本没有意义。但是,如果他们坚持,您可以添加一个小的javascript代码,将Ids添加到测试站点,您可以在生产站点中省略它。
以Chacha102的想法为基础
$(document).ready(function() {
var index = 1;
$.each($(*:not([id])), function(){
$(this).attr("id", "id1000" + index++); //or some other unique generator
});
}
确保在测试工具之前运行它!