公共对象未被内部行为识别

时间:2013-06-14 15:37:53

标签: vbscript qtp

我在QTP中创建一个脚本,它有一些内部动作(ActionA,ActionB ...),我有一个相关的函数库commonFunctions.vbs

在我的commonFunctions中,我有以下代码:

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

在ActionB(由ActionA调用)中,我正在使用这些Object变量:

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中定义?

我觉得这很简单,但我无法理解。

2 个答案:

答案 0 :(得分:0)

问题似乎不是范围,而是有时QTP无法识别页面对象。

尝试明确地给出条件:

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

此外,本文可能会有所帮助:

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

答案 1 :(得分: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的实用程序对象,可用于将值从一个Action传递到另一个Action。