当 QTP 记录(或学习)一个对象时,它会捕获一组足以唯一标识该对象的属性/值。此外,如果启用了智能识别,它将捕获一些额外的属性/值对以供将来使用。
在执行测试时,如果找不到要识别的对象(没有元素与描述匹配或有多个元素匹配),它将尝试使用额外的属性来查找元素。
如果一开始您的测试在没有触发智能识别的情况下运行,现在它被触发,则意味着 HTML 已更改,因此描述不再唯一标识元素,QTP 对测试描述的元素做出有根据的猜测(显然在你的情况是一个很好的猜测,因为测试仍然有效)。
QTP 认为这是次优的,因为它确实是一个猜测,这就是智能识别出现在报告中的原因。实际上,系统会提示您通过改进测试对象的描述来改进您的测试。
更多细节:如果在对象Tools -> Object Identification识别对话框( _ 序号标识符被认为是最后的手段,QTP 将在使用序号标识符之前尝试使用智能识别。因此,如果您的对象使用序号标识符,即使 HTML 页面根本没有更改,它也会使用智能标识。
此规则的例外是使用IndexN#X
source index(并从 QTP 11 开始生成的 XPath 表达式)可能有助于识别对象。如果这些是活动的 ( Tools -> Options -> Web -> Advanced -> Run settings) 并且建议的元素与现有描述匹配(不包括序号标识符),则不使用智能标识。
如果您检查Browser的对象标识,您将看到描述中没有列出任何属性,因此如果存在多个浏览器,我们将始终获得一个序号,并且智能标识将尝试运行。