1

显然,我是 QTP 的新手。我用它来测试一个包含多种表单的 HTML 页面;一个接一个。

它曾经工作得很好。现在我经常看到这个:

调用了智能识别机制 - 未找到对象。

为什么会这样?我要做的就是将焦点设置为文本输入并输入一些数据并单击提交。

任何有用的提示都会很棒。QTP 有如此陡峭的学习曲线。

谢谢!

让我更具体一点:这个 HTML 页面上有 40 个表单,其中一些使用具有相同名称属性的输入元素。这是问题吗?

<input type="text" name="meetingId" />
<input type="text" name="meetingid" />

请注意这两个示例中的 meetingId/meetingid 区分大小写。这是一个问题吗?

4

1 回答 1

2

当 QTP 记录(或学习)一个对象时,它会捕获一组足以唯一标识该对象的属性/值。此外,如果启用了智能识别,它将捕获一些额外的属性/值对以供将来使用。

在执行测试时,如果找不到要识别的对象(没有元素与描述匹配或有多个元素匹配),它将尝试使用额外的属性来查找元素。

如果一开始您的测试在没有触发智能识别的情况下运行,现在它被触发,则意味着 HTML 已更改,因此描述不再唯一标识元素,QTP 对测试描述的元素做出有根据的猜测(显然在你的情况是一个很好的猜测,因为测试仍然有效)。

QTP 认为这是次优的,因为它确实是一个猜测,这就是智能识别出现在报告中的原因。实际上,系统会提示您通过改进测试对象的描述来改进您的测试。


更多细节如果在对象Tools -> Object Identification识别对话框 _ 序号标识符被认为是最后的手段,QTP 将在使用序号标识符之前尝试使用智能识别。因此,如果您的对象使用序号标识符,即使 HTML 页面根本没有更改,它也会使用智能标识。 此规则的例外是使用IndexN#X
source index(并从 QTP 11 开始生成的 XPath 表达式)可能有助于识别对象。如果这些是活动的 ( Tools -> Options -> Web -> Advanced -> Run settings) 并且建议的元素与现有描述匹配(不包括序号标识符),则不使用智能标识。

如果您检查Browser的对象标识,您将看到描述中没有列出任何属性,因此如果存在多个浏览器,我们将始终获得一个序号,并且智能标识将尝试运行。

于 2012-05-14T18:02:06.113 回答