1

QTP でスクリプトを作成しています。スクリプトにはいくつかの内部アクション (ActionA、ActionB...) があり、関連する関数ライブラリ commonFunctions.vbs があります。

私の commonFunctions には、以下のコードがあります。

Public PageA, PageB
Set PageA = Browser("A").Page("A")
Set PageB = Browser("A").Page("B")

また、ActionB (ActionA によって呼び出される) では、これらのオブジェクト変数を使用しています。

If PageB.Link("someLink").Exist Then
    PageB.Link("someLink").Click
End If

ActionA と ActionB の両方に、変数によって使用されるオブジェクト リポジトリがあります。

テストを実行すると、次のエラーが表示されます。

Object doesn't support this property or method: 'PageB.Link'
Line (4): "If PageB.Link("someLink").Exist Then". 

私は何が欠けていますか?ActionB で変数が定義されていないのはなぜですか?

これは簡単なことのように感じますが、理解できません。

4

2 に答える 2

0

問題はスコープではないようですが、QTP がページ オブジェクトを認識しないことがあります。

次のように条件を明示的に指定してみてください。

If Browser("A").Page("B").Link.Exists Then
'~~~~~~~code

また、この記事は少し役立つかもしれません:

http://www.joecolantonio.com/2010/08/12/quicktest-object-recognition/

于 2013-06-14T20:02:16.930 に答える
0

アクション 1 からアクション 2 にデータを渡すには、入出力パラメーターが必要です。変数の型 (Public など) に依存しません。

In Action 1 -
Set PageB = Browser("A").Page("B")
LocalParameter(param) = PageB 

In Action 2 -
Set PageB =LocalParameter(param)
PageB.Link("someLink").Click

ここで、「LocalParameter」は QTP のユーティリティ オブジェクトであり、あるアクションから別のアクションに値を渡すために使用できます。

于 2015-11-16T08:34:22.513 に答える