Eval
计算一个表达式的值并返回结果。
[result = ]Eval(expression)
Execute
执行一个或多个指定的语句。
Execute statements
例子:
x = 9 y = 10 bIsEqual = Eval("x = y") Execute "x = y" MsgBox "bIsEqual: " & bIsEqual MsgBox "X is no longer 9. It is: " & x
bIsEqual: False
X is no longer 9. It is: 10
x = 9 y = 10 Execute "z = (x = y)" MsgBox "z: " & z
z: False
利用Execute能够执行一些特殊操作
1、创建变量
var_1 = 1 : var_2 = 2 : var_3 = 3 : var_4 = 4: var_5 = 5
如果我们想创建以上5个变量,就可以用Execute来实现
For ix = 1 to 5 Execute "var_" & ix & " = " & ix Next
2、Option Explicit
Option Explicit iNumber = 9
上面的iNumber=9这一行会报错:变量未定义,因为缺少Dim iNumber语句,Option Explicit要求所有变量先定义后使用,但利用Execute函数可绕过这条规则。
Option Explicit Execute "iNumber = 9"
3、赋值语句
bResult = Eval("TypeName(var)")
上述语句中,bResult是一个真实变量。
Execute "bResult = TypeName(var)"
上述语句中,bResult是一个象征性变量,需要事先定义。
4、多行语句
sFunc = "Function ExecuteTest" sFunc = sFunc & vbLf sFunc = sFunc & "MsgBox ""ExecuteTest executed.""" sFunc = sFunc & vbLf sFunc = sFunc & "End Function" Execute sFunc Call ExecuteTest()
程序能够执行成功,输出ExecuteTest executed.也可以将语句写在一行内,如下:
Execute "Function ExecuteTest : MsgBox ""ExecuteTest executed."" : End Function" Call ExecuteTest()
这里,如果将Execute替换成Eval,程序执行失败,提示“语法错误”。
5、执行QTP语句
strBrowser = "Browser(""title:=Google"")" Execute "MsgBox " & strBrowser & ".Exist(0)"
当语句是单行时,两个函数都能使用。
strBrowser = "Browser(""title:=Google"")" bExist = Eval(strBrowser & ".Exist(0)")
而语句为多行时,只能使用Execute函数。
strBrowser = "Browser(""title:=Google"")" 'Browser("title:=Google") strPage = "Page(""title:=Google"")" 'Page("title:=Google") strText = "WebEdit(""name:=q"")" 'WebEdit("name:=q") strEvent = "Set ""Execute Test""" 'Set "Execute Test" Execute strBrowser & "." & strPage & "." & strText & "." & strEvent
或者
strBrowser = "Browser(""title:=.*Google.*"")" 'Browser("title:=Google") strPage = "Page(""title:=.*Google.*"")" 'Page("title:=Google") strText = "WebEdit(""name:=q"")" 'WebEdit("name:=q") strButton = "WebButton(""value:=Google Search"")" 'WebButton("value:=Google Search") strEvent = "Set ""Execute Test""" 'Set "Execute Test" strClick = "Click" 'Click strSync = "Sync" 'Sync strBack = "Back" 'Back Execute strBrowser & "." & strPage & "." & strText & "." & strEvent Execute strBrowser & "." & strPage & "." & strButton & "." & strClick Execute strBrowser & "." & strSync Execute strBrowser & "." & strBack
以上代码与下面的QTP脚本有同样效果:
Browser("title:=.*Google.*").Page("title:=.*Google.*").WebEdit("name:=q").Set "Execute Test" Browser("title:=.*Google.*").Page("title:=.*Google.*").WebButton("value:=Google Search").Click Browser("title:=.*Google.*").Sync Browser("title:=.*Google.*").Back