関数に aを渡すとしましょうBrowser("MyBrowser").Page("MyPage").WebCheckBox("MyBox")
:
MyFunction (Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox"))
後で、この関数は、受信したテスト オブジェクトの論理名(この場合はもちろん「MyBox」) をログに記録します。
どうすればそれができますか?
"name" テスト オブジェクト プロパティは、テスト オブジェクトを再度追加した場合に作成される名前を返します。 論理名の (文書化された) テスト オブジェクト プロパティはありません。AUT GUI からの名前ではないため、 ランタイム オブジェクトのプロパティに名前を含めることはできません。
したがって、テストオブジェクトはその名前を知らないと思います。リポジトリだけが、テスト オブジェクトが格納されている名前を「認識」します。
したがって、テスト オブジェクトではなく、リポジトリ自体を検査する必要があります。
API を使用すると、ObjectRepositoryUtil
(または他のメソッドを介してGetChildren
) リポジトリのテスト オブジェクト コレクション内のテスト オブジェクトを検索し、GetLogicalName
そのメソッドを使用してその名前を取得できます。罰金。
しかし、それを機能させる唯一の方法は、リポジトリをロードしてリポジトリへの参照を取得することです。この API は、テスト実行内からではなく、QTP の外部からリポジトリを操作 (または分析) するように設計されている印象を受けます。リポジトリを再ロードしたくありません。すでにロードされているリポジトリの 1 つでテスト オブジェクトを検索したいと考えています。
API は(名前とパスによって) ロードされているものを通知できますが、それらのリポジトリの 1 つを表すオブジェクト インスタンスへの参照RepositoriesCollection
を取得する手段は提供しません。
では、すでにロードされているリポジトリへの参照を取得するにはどうすればよいGetLogicalName
のでしょうか?
または、一般的には、現在のアクションの共有リポジトリに含まれる「通常の」テスト オブジェクトへの参照が与えられた場合、プログラムでその論理名を見つけるにはどうすればよいでしょうか?
これができないことを知っている超賢明な QTP ウィザード a la Motti がいる場合、これが本当なら「それはできない」と書かれていても、彼からの回答を本当に感謝します.