Vbscript 在qtp中调用函数时类型不匹配

Vbscript 在qtp中调用函数时类型不匹配,vbscript,qtp,hp-uft,Vbscript,Qtp,Hp Uft,我正在使用QTP 11.5自动化web应用程序。我正在尝试通过driverscript调用QTP中的操作,如下所示: RFSTestPath=“D:\vf74\D驱动器\RFS自动化” LoadAndRunAction RFStestPath&LogInApplication,“Action1”,oneIteration 在LogInApplication(Action1)中,我调用登录函数的方式如下: 调用fncLogInApplication(strURL、struserName、strpa

我正在使用QTP 11.5自动化web应用程序。我正在尝试通过driverscript调用QTP中的操作,如下所示:

RFSTestPath=“D:\vf74\D驱动器\RFS自动化”

LoadAndRunAction RFStestPath&LogInApplication,“Action1”,oneIteration

在LogInApplication(Action1)中,我调用登录函数的方式如下:

调用fncLogInApplication(strURL、struserName、strpassbrow)

fncLogInApplication的定义写在fncLogInApplication.vbs中 当我将fncLogInApplication.vbs文件与driverscript关联时,我能够执行我的代码而不会出现任何错误。但当我将.vbs文件从driverscript中解除关联并将其关联到LogInApplication测试时,我得到了“类型不匹配:'fncLogInApplication'”

请问协会里有谁能帮助我吗。我希望在关联到LogInApplication而不是主driverscript时执行fncLogInApplication


如果您需要更多信息,请回复。

在任何时候只有一组关联库处于活动状态:这始终是最外层的测试库。

这意味着,如果测试A调用测试B,则测试B将根据测试A的关联库列表而不是B的加载库来执行

这也意味着,如果B依赖于某个库,并且B与该库关联,但从测试a(与该库不关联)调用,则B将无法调用(定位)函数,因为从未加载B的关联库(仅来自a的库)。(当然,A也是如此。)

如果您仍然感兴趣:“类型不匹配”是QTP(或VBScript)告诉您的糟糕方式:“调用的函数未知,因此我打赌您指的是数组变量取消引用,而您指定的变量等于空,因此它不是数组,因此不能作为数组变量取消引用,这就是我所说的‘类型不匹配’。” 考虑到VB/VBScript的语法树,此推理是有效的:函数调用和数组变量引用无法正式区分。从语法上讲,它们非常相似,或在大多数情况下完全相同。因此,请准备好处理“类型不匹配”,如“未知函数引用”“创建VBScript代码时VB/VBScript从不显示的消息

但是,您可以在测试B的代码中加载所需的库(例如,使用
LoadFunctionLibrary
),但这仍然允许A在B加载该库并从A的调用返回后从该库调用函数。然而,这以及这个过程的所有可能的变化都会对调试、转发引用和全局变量的可见性等方面产生副作用,因此我建议不要这样做

补充说明:

  • 没有充分的理由使用
    调用
    。只需调用sub或函数
  • 如果调用一个函数并使用它返回的结果,则必须将参数包含在参数中
  • 如果调用
    sub
    (或
    函数
    ,并且不使用它返回的结果),则不能在论文中包含参数。如果
    子函数
    函数
    只接受一个参数,则可能允许您将其置于偏执状态,但事实并非如此。在这种情况下,这个论点被简单地看作是偏执论中的一个术语
  • 刚刚列出的参数“括号”方面可能会产生非常严重的错误,特别是当参数是
    byRef
    时,这也是由于(但不限于)VBScript不幸允许您为
    byRef
    参数传递值这一事实造成的,因此,一般来说,将偏执放在它所属的地方(即绝对需要的地方)是一个好主意

由于不知道自己到底想要实现什么以及为什么,很难给出一个有用的答案……首先,感谢您的回答。。我想做的是。。我试图按顺序调用操作项(我从excel工作表中执行的操作列表)。在每个操作中,我都编写一个测试脚本并调用所需的函数。只有将所有这些函数与主驱动程序脚本关联,我才能成功运行。现在我关心的是,如果我将所有这些函数与主驱动程序相关联,我将来将编写许多函数。。然后,执行可能会很慢,并在许多点卡住。我只想将所需的函数与独立操作相关联,这样驱动程序就不会过载。在出现“过载”症状之前,请推迟处理“过载”症状。不要修理没有坏的东西。谢谢@TheBlastOne