我目前每天都在使用 QuickTest Professional 11,它在后台使用 VBScript。最近,我开始开发自己的一些函数来处理常见情况。我对 VBscript 很陌生,我的大部分编程经验都是 C 和 Python。
我正在尝试在 VBScript 中实现 Python 的 Try/Except,主要是围绕诸如单击链接或从下拉框中选择值之类的操作。这是我到目前为止所拥有的:
Class cls_ErrorHandler
Private bWasError
Private Sub Class_Initialize()
bWasError = False
End Sub
Private Sub IsErr
If Err.Number <> 0 Then
bWasError = True
Else
bWasError = False
End If
Err.Clear
End Sub
' If the command fails, set bWasError
Public Sub Try(strCommandToTry)
On Error Resume Next
Execute(strCommandToTry)
me.IsErr
On Error Goto 0
End Sub
Public Sub Except(strCommandInCaseOfError)
If bWasError Then
Execute(strCommandInCaseOfError)
End If
bWasError = False
End Sub
End Class
我希望能够写出这样的东西:
Set oErrorHandler = New cls_ErrorHandler
oErrorHandler.Try(Stringify(Browser("Browser Name").Page("Page Name").WebCheckBox("Checkbox Name").Set "ON"
oErrorHander.Except(Stringify(Browser("Browser Name").Page("Page Name").WebButton("Save").Click))
据我所知,在 VBScript 中确实没有任何好的方法可以将函数作为参数传递给另一个函数。最好的方法似乎是传递一个包含函数名称的字符串,然后将该字符串输入 Execute() 或 Eval()。QuickTest Professional 中的对象往往有很多引号,因此手动将它们全部转义会使代码不可读。
在 C 中,我会使用这样的东西:
#define Stringify(obj) #obj
它会完成......但在VBScript中似乎不存在这样的东西。有什么方法可以实现吗?VBScript 中是否有任何东西将对象作为其输入并返回该对象名称的字符串表示形式?是否可以用 C/C# 编写一个 DLL 来提供这种功能?