私は現在、裏で VBScript を使用する QuickTest Professional 11 で毎日作業しています。最近、一般的な状況を処理するために独自の関数をいくつか開発し始めました。私は 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 を作成することは可能でしょうか?