`
kiki1120
  • 浏览: 307704 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

VBS函数Eval和Execute的区别

    博客分类:
  • QTP
 
阅读更多

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics