QTP がオブジェクトを記録 (または学習) するとき、このオブジェクトを一意に識別するのに十分なプロパティ/値のセットをキャプチャします。さらに、スマート識別が有効になっている場合は、将来の使用のためにいくつかの追加のプロパティ/値のペアがキャプチャされます。
識別されるオブジェクトが見つからない場合 (説明に一致する要素がないか、一致する要素が複数ある場合) にテストを実行すると、追加のプロパティを使用して要素を見つけようとします。
最初はスマート識別がトリガーされずにテストが実行され、現在はトリガーされている場合、HTML が変更されたため、説明が要素を一意に識別しなくなり、QTP はテストがどの要素を説明しているかについて知識に基づいた推測を行います (明らかにあなたの場合、テストはまだ機能するので、それは良い推測です)。
QTP は、これは実際には推測であるため、次善の策であると考えています。そのため、スマートな識別がレポートに表示されます。実際には、テスト オブジェクトの説明を改善してテストを改良するように求められます。
いくつかの詳細:オブジェクト識別ダイアログ ( Tools -> Object Identification
) で定義された一連のプロパティが要素を一意に識別するのに十分でない場合、QTP は通常、「説明に一致する要素の使用」を意味するタイプの序数識別子を追加します。序数識別子は最後の手段と見なされ、QTP は序数識別子を使用する前にスマート識別を使用しようとします。したがって、オブジェクトが序数識別子を使用している場合、HTML ページがまったく変更されていなくても、スマート識別が使用されます。
このルールの例外は、Index
N
#X
source index
オブジェクトの識別に役立つ可能性があります (および QTP 11 以降では、生成された XPath 式)。これらがアクティブ ( Tools -> Options -> Web -> Advanced -> Run settings
) で、提案された要素が既存の説明 (序数識別子を含まない) と一致する場合、スマート識別は使用されません。
Browser
の Object Identification を調べると、説明にプロパティがリストされていないことがわかります。そのため、複数の Browser が存在する場合は、常に序数を取得し、スマートな識別を実行しようとします。