1

明らかに、私は QTP の初心者です。これを使用して、いくつかのフォームを含む HTML ページをテストします。次々と。

以前は問題なく動作していました。今、私は常にこれを見ています:

スマート識別メカニズムが呼び出されました - オブジェクトが見つかりません。

なぜこれが起こるのですか?私がやろうとしているのは、フォーカスをテキスト入力に設定し、データを入力して送信をクリックすることだけです。

役立つヒントは素晴らしいでしょう。QTP の学習曲線は非常に急勾配です。

ありがとうございました!

もう少し具体的に説明します。この HTML ページには 40 のフォームがあり、そのうちのいくつかは同一の name プロパティを持つ input 要素を使用しています。これは問題ですか?

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

これら 2 つの例では、meetingId/meetingid の大文字と小文字が区別されることに注意してください。これは問題ですか?

4

1 に答える 1

2

QTP がオブジェクトを記録 (または学習) するとき、このオブジェクトを一意に識別するのに十分なプロパティ/値のセットをキャプチャします。さらに、スマート識別が有効になっている場合は、将来の使用のためにいくつかの追加のプロパティ/値のペアがキャプチャされます。

識別されるオブジェクトが見つからない場合 (説明に一致する要素がないか、一致する要素が複数ある場合) にテストを実行すると、追加のプロパティを使用して要素を見つけようとします。

最初はスマート識別がトリガーされずにテストが実行され、現在はトリガーされている場合、HTML が変更されたため、説明が要素を一意に識別しなくなり、QTP はテストがどの要素を説明しているかについて知識に基づいた推測を行います (明らかにあなたの場合、テストはまだ機能するので、それは良い推測です)。

QTP は、これは実際には推測であるため、次善の策であると考えています。そのため、スマートな識別がレポートに表示されます。実際には、テスト オブジェクトの説明を改善してテストを改良するように求められます。


いくつかの詳細:オブジェクト識別ダイアログ ( Tools -> Object Identification) で定義された一連のプロパティが要素を一意に識別するのに十分でない場合、QTP は通常、「説明に一致する要素の使用意味するタイプの序数識別子を追加します。序数識別子は最後の手段と見なされ、QTP は序数識別子を使用する前にスマート識別を使用しようとします。したがって、オブジェクトが序数識別子を使用している場合、HTML ページがまったく変更されていなくても、スマート識別が使用されます。 このルールの例外は、IndexN#X
source indexオブジェクトの識別に役立つ可能性があります (および QTP 11 以降では、生成された XPath 式)。これらがアクティブ ( Tools -> Options -> Web -> Advanced -> Run settings) で、提案された要素が既存の説明 (序数識別子を含まない) と一致する場合、スマート識別使用されません。

Browserの Object Identification を調べると、説明にプロパティがリストされていないことがわかります。そのため、複数の Browser が存在する場合は、常に序数を取得し、スマートな識別を実行しようとします。

于 2012-05-14T18:02:06.113 に答える