我有一个查询 在我们的应用程序中,我们有很多 HTML 标记。在开发过程中,由于没有要求,许多标签没有被赋予任何 ID。现在 QA 团队希望使用 QTP 自动化测试用例。在大多数情况下,此工具无法识别,因为它没有找到大多数 HTML 标签的 id。现在我们被要求为所有 HTML 标签添加 id。我想知道向这些标签添加 id 属性是否会有任何影响。甚至积极的影响也是受欢迎的
5 回答
我不认为会有任何积极或消极的影响:也许 HTML 页面的大小会增加一点,但可能不会那么多。
不过,您确定需要在页面的每个 HTML 标记上添加“id”属性吗?不是只有几个就够了吗?就像表单域、链接、错误消息一样;大概就是这样?
但是,您必须注意的一件事是“id”,如“identifers”,必须是唯一的;这意味着在开始添加它们之前,定义某种“id-policy”可能会很好,例如,“这种元素的 id 应该以这种方式命名”。
而且,对于您的下一个项目:让开发人员在开发时添加这些项目;
-)(当然要遵循政策)
现在我正在考虑它:一个积极的影响可能是编写与您的 HTML 文档交互的 Javascript 代码会更容易——但是对于下一个项目或这个项目的演进来说,当这些 id 是在开发人员将 JS 代码放置到位时,HTML 中已经存在......
由于还没有与 QTP 相关的答案。
QTP 中的 GUI 识别是面向对象的。为了识别一个对象,QTP 需要一个对象属性的唯一组合,并尽可能快地检查它们——这就是为什么 HTML ID 是理想的。
现在,它尤其重要 - 对于没有其他唯一标识符的对象。最典型的例子——html表格。它们的内容是动态的,它们在页面上的数量可能会有所不同。通过添加 HTML ID,您可以让识别机制直接找到正确的表格。
具有其他独特属性的对象可以在没有 HTML ID 的情况下很好地识别。例如,如果页面上有一个“提交”链接,QTP 将通过内部文本成功识别它。
所以特定于上下文的答案:不要开始为每个标签添加 id。让自动化人员准备一份他们有问题的对象列表。并为这些对象添加 ID。
PS。它还取决于自动化编程技能。有描述性编程和动态识别方法。即使没有提供 ID,它们也允许检索正确的对象。
正如Albert所说,QTP 并不仅仅依赖于 elements' id
,实际上是因为许多 Web 应用程序id
为每个会话生成不同的 s ,(据我记得)该id
属性不是大多数默认描述的一部分网络测试对象。
QTP is pretty good at recognizing most simple web controls and if you're facing problems it may be the case that a Web Extensibility project will help you bridge the gap between the semantics of your web application and the raw HTML it is created in. If a complex control is recognized by QTP as a WebElement
(which is actually the div
that contains the span
that drives the code) you will understandably have object recognition problems since there are many div
s on the page but probably many less complex controls.
如果您在谈论副作用 - 不。添加 id 不会导致任何问题(当然除了占用一些额外的字节)
如果您确实需要添加 id,请继续添加它们。
http://www.w3.org/TR/html4/struct/links.html#anchors-with-id说:
id 和 name 属性共享相同的名称空间。这意味着它们不能在同一文档中同时定义具有相同名称的锚点。允许使用这两个属性为以下元素指定元素的唯一标识符:A、APPLET、FORM、FRAME、IFRAME、IMG 和 MAP。当两个属性都用于单个元素时,它们的值必须相同。