【问题标题】:Type mismatch when calling a function in qtpqtp中调用函数时类型不匹配
【发布时间】:2014-10-13 21:52:31
【问题描述】:

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

RFSTestPath = "D:\vf74\D Drive\RFS Automation\"

LoadAndRunAction RFStestPath & LogInApplication,"Action1",oneIteration

在 LogInApplication(Action1) 内部调用登录函数为:

调用 fncLogInApplication(strURL,strUsesrName,strPasssword)

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

任何人都可以在协会中帮助我。我希望在关联到 LogInApplication 而不是与主驱动程序脚本关联时执行 fncLogInApplication。

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

【问题讨论】:

  • 不知道你到底想达到什么目标,以及为什么,很难给出有用的答案......
  • 首先,感谢您的回答.. 我想做的是.. 我试图按顺序调用操作项(我从 excel 表中采取的操作列表)。在每个动作中,我都在编写一个测试脚本并调用所需的函数。只有当我将所有这些功能与主驱动程序脚本相关联时,才能成功运行。现在我担心的是,将来我要编写很多函数,如果我将所有这些函数都关联到主驱动程序..那么执行可能会很慢并且在很多点上都会卡住。我只想将所需的功能与 indiv 操作相关联,这样驱动程序就不会超载
  • 推迟解决“超载”症状,直到你有它。不要修复没有损坏的东西。
  • 谢谢@TheBlastOne

标签: vbscript qtp hp-uft


【解决方案1】:

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

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

这也意味着如果 B 依赖于一个库,并且 B 关联了这个库,但是从测试 A 中调用(它没有关联这个库),那么 B 将无法调用(定位)该函数,因为关联的库永远不会加载 B 的(只有来自 A 的)。 (当然,A 也一样。)。

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

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

补充说明:

  • 没有充分的理由使用CALL。只需调用 sub 或函数即可。
  • 如果您调用一个函数并使用它返回的结果,您必须在括号中包含参数。
  • 如果您调用sub(或function,并且不使用它返回的结果),您不得在括号中包含参数。如果subfunction 只接受一个参数,看起来你可以把它放在括号中,但事实并非如此。在这种情况下,参数被简单地视为括号中的一个术语。
  • 刚刚列出的参数“括号”方面可能会产生非常严重的错误,特别是如果参数是byRef,这也是由于(但不限于)VBScripts 不幸地允许您为byRef 参数传递值这一事实(需要可变参数的地方),所以通常最好只将括号放在它所属的地方(即绝对需要的地方)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多