Let'sは、私は関数にBrowser("MyBrowser").Page("MyPage").WebCheckBox("MyBox")
を渡すと言う:テストオブジェクト(関連する共有ORに存在する)の論理名を取得するにはどうすればよいですか?
MyFunction (Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox"))
その後、関数はこの場合には、当然のことながら、「MyBoxで受信したテスト対象の論理名を(ログしたいです")。
どうすればできますか?
「名前」テストオブジェクトプロパティは、テストオブジェクトを再追加すると作成される名前を返します。 論理名には、(文書化された)テストオブジェクトプロパティはありません。 実行時オブジェクトのプロパティは、AUT GUIの名前ではないため、おそらくには名前を含めることはできません。
だから、テストオブジェクトはその名前を知らないと思います。リポジトリだけが、テストオブジェクトがそこに格納されている名前の下に「知っている」。
したがって、テストオブジェクトではなく、リポジトリ自体を検査する必要があります。
ObjectRepositoryUtil
APIを使用すると、GetChildren
やその他の方法でリポジトリのテストオブジェクトコレクション内のテストオブジェクトを検索し、GetLogicalName
メソッドを使用してその名前を取得することができます。ファイン。
しかし、これを実現させる唯一の方法は、をロードしてにリポジトリへの参照を取得することです。私は、このAPIがテスト実行からではなく、QTPの外部からreposを操作(または分析)するように設計されているという印象を受けます。 私はリポジトリを再ロードしたくありません。すでにロードされているリポジトリの1つでテストオブジェクトを検索したいと思います。
RepositoriesCollection
APIは、(自分の名前とパスで)ロードされている私に言うことができますが、それはは、これらのリポジトリの 1を表すオブジェクトのインスタンスへ参照を得る手段を提供していません。
は、どのように私はすでにロードされたリポジトリへの参照を取得することができますので、私はGetLogicalName
を使用することができますか?
一般的に質問:現在のアクションの共有リポジトリに含まれている「通常の」テストオブジェクトへの参照を考えて、どのようにして論理名をプログラムで見つけることができますか?
これを行うことができないということを知っているMottiさんが超うまいQTPウィザードを使用している場合は、「これを実行できません」というメッセージが表示されても本当に感謝します。
あなたが不思議に思うような場合、「TestObjName」は文書化されていますが、多くのオブジェクトではそうではありません。 UFTヘルプでそれを検索すると、WinButtonやその他のWindowsおよびActiveXコントロールなどのリストに表示されますが、すべてのオブジェクトで機能するはずです。 – Xiaofu
テストオブジェクトがORに格納されているか、説明によって生成されているかを調べることができますか? TestObjNameは、ORに格納されている場合に、ディシジョン生成オブジェクトが割り当てられるデフォルトの名前を返します。 – TheBlastOne