vbscript - 如何调用函数库中的函数(带参数),从变量中获取函数名?

标签 vbscript qtp

我正在尝试使用 getref 从与测试关联的函数库中调用一个函数。
我的代码 -

在行动1

str = "sample"
msg = "hi"
x = GetRef("Function_"&str)(msg)
msgbox x

在函数库中,
Function Function_sample(strMsg)
    Function_sample = strMsg
End Function

我收到错误消息-

"Invalid procedure call or argument."



但是如果将函数放在同一个 Action 中,它就可以正常工作。
如何调用函数库中的函数(带参数),从变量中获取函数名?

最佳答案

简约的工作示例:

Lib.vbs:

Option Explicit

Function Twice(n)
  Twice = n + n
End Function

Main.vbs:
Option Explicit

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")

ExecuteGlobal goFS.OpenTextFile(".\lib.vbs").ReadAll()

Dim fpTwice : Set fpTwice = GetRef("Twice")

WScript.Echo fpTwice(42)

输出:
cscript main.vbs
84

错误消息“...运行时错误:无效的过程调用或参数:'GetRef'”表明(导入)函数库是罪魁祸首。

更新:

假设 VBScript 引擎保留一个将子/函数/方法名称与可调用代码相关联的表以能够进行文字/直接调用是合理的:
n = Twice(11)

并且 GetRef("Twice") 访问此表。因此,当文字调用成功时,我永远不会期望间接/“函数指针”调用或 GetRef() 失败。

但根据 thisthat ,至少有四种方法可以将库/模块“导入”到 QTP 中,并且由于我不使用 QTP,我不能排除这些方法中的一些(甚至全部)会做一些愚蠢的事情来导致错误 -你描述的行为。

关于vbscript - 如何调用函数库中的函数(带参数),从变量中获取函数名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16691353/

相关文章:

windows - 如何从 VB 脚本确定 Windows 版本?

extjs - QTP 脚本无法识别组合框对象

vbscript - QTP 无法创建 ActiveX 对象

vbscript - 将测试参数从 .vbs 传递到 QTP 测试

batch-file - 如何使用QTP将参数传递到批处理文件?

testing - 是否可以将值存储在另一个 Action 本地数据表中?

dictionary - 读取txt文件并将所有单词放入字典中

javascript - 获取 Document.getElementByID ("id_name"选择的元素的索引)

algorithm - 从保存的状态恢复递归函数

excel - 如何从 Excel 中打开突出显示特定行的 csv 文件?