6

関数に 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 がいる場合、これが本当なら「それはできない」と書かれていても、彼からの回答を本当に感謝します.

4

4 に答える 4

1

便宜上、これらの個別の関数をすべて 1 つの関数 (GetFullORName) に結合しました。カスタム関数でより良い Reporter.Event 情報を提供するために使用します...

Function GetFullORName (obj)
    Dim fullUFTName : fullUFTName = obj.GetTOProperty("class name") & "(""" & obj.GetTOProperty("TestObjName") & """)"
    Dim objCurrent : Set objCurrent = obj
    Do While Not IsEmpty(objCurrent.GetTOProperty("parent"))
        Set objCurrent = objCurrent.GetTOProperty("parent")
        fullUFTName = objCurrent.GetTOProperty("class name") & "(""" & objCurrent.GetTOProperty("TestObjName") & """)" & "." & fullUFTName
    Loop
    GetFullORName = fullUFTName
End Function


Public Function CheckObjExist (obj)
    If obj.Exist Then
        Reporter.ReportEvent micPass, "CheckObjExist [" & obj.GetTOProperty("TestObjName") & "]", "Object = [ " & GetFullORName(obj) & " ]" & Chr(13) & "Object exists"
        CheckObjExist = True
    Else
        Reporter.ReportEvent micFail, "CheckObjExist [" & obj.GetTOProperty("TestObjName") & "]", "Object = [ " & GetFullORName(obj) & " ]" & Chr(13) & "Object does NOT exist"
        CheckObjExist = False
    End If
End Function
于 2014-09-25T15:11:37.160 に答える
0

論理名は、非常に多くの行ではなく、単純なコード行で取得できます。

あなたの場合:

関数は、引数からオブジェクトの論理名を返す必要があります

MyFunction (Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox"))  

Function MyFunction(obj)  

MyFunction= obj.ToString()  'This is an inbuilt method of object in QTP

End Function  

それが役立つかどうか教えてください。

于 2016-07-29T03:30:29.410 に答える