QTP自动化测试之VBScript基础(下)

QTP自动化测试之VBScript基础(下)

要想使用QTP进行自动化测试,必须了解VBScript这门语言,对于使用过ASP或VB开发的人来说,VBScript已经再熟悉不过了,但是没有接触过VBScript的同学也不要灰心,因为这门语言简单易学。

7. 条件语句
8. 循环语句
9. 过程

7. 条件语句

VBScript中可以使用以下条件语句:

  • If…Then…Else语句
  • Select Case语句

7.1. If…Then…Else语句

If…Then…Else语句结构如下:

1
If condition Then statements [Else elsestatements]

或者使用块形式

1
2
3
4
5
6
7
If condition Then
    [statements]
[ElseIf condition-n Then
    [elseifstatements]] . . .
[Else
    [elsestatements]]
End If

主要参数:

  • condition:为一个(多个)数值或字符串表达式,其运算结果为True或False,若condition为Null,则被视为False。
  • statements:为condition等于True时执行的一条或多条(以冒号分开)语句。

对于短小简单的测试,可以使用单行形式(第一种语法),但块形式(第二种语法)提供了比单行形式更强的结构化与适应性,比较容易阅读、维护及调试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
'1. 条件为True时
'单行形式
Dim myDate
myDate = #2011-9-8#   '日期时间字符串需用#括起来
If myDate < Now Then myDate = Now
'块形式
If i = 100 Then
    c = True
    i = 0
End If
 
'2. 条件为True和False时
If user.UserName = "admin" Then
    showAdminPage = True
Else
    showAdminPage = False
End If
 
'3. 对多个条件判断
If value = 0 Then
    MsgBox(0)
ElseIf value = 1 Then
    MsgBox(9999)
Else
    MsgBox("输入不合法!")
End If

7.2. Select Case语句

语法结构如下:

1
2
3
4
5
6
Select Case testexpression
    [Case expressionlist-n
        [statements-n]] . . .
    [Case Else expressionlist-n
        [elsestatements-n]]
End Select

主要参数:

  • testexpression:任意数值或字符串表达式。
  • statements:当testexpression与expressionlist-n中的任意部分匹配时,执行的一条或多条语句。

Select Case结构提供了If...Then...ElseIf结构的另一个变通形式,功能与If...Then...ElseIf类似,但可以使代码更加简练易读,它与Case语句关联使用。

1
2
3
4
5
6
7
8
9
Dim value : value = 5   '多条语句在一行,需用冒号分开
Select Case value
    Case 0:
        MsgBox(0)
    Case 1:
        MsgBox(9999)
    Case Else
        MsgBox("输入不合法!")
End Select

8. 循环语句

VBScript中可以使用以下循环语句:

  • Do...Loop语句
  • While...Wend语句
  • For...Next语句
  • For Each...Next语句

8.1. Do…Loop语句

当(或直到)条件为True时循环,语法结构如下:

当条件为True时重复执行某语句块。

1
2
3
4
5
Do [{While | Until} condition]
    [statements]
    [Exit Do]
    [statements]
Loop

当条件变为True之前重复执行某语句块。

1
2
3
4
5
Do
    [statements]
    [Exit Do]
    [statements]
Loop [{While | Until} condition]

主要参数:

  • condition:数值或字符串表达式,其值为True或False。如果condition为Null,则condition被当作False。
  • statements:当condition为True时被重复执行的一条或多条命令。

Exit Do可以退出循环体,循环可以嵌套使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Do Until response = vbNo
    myNum = Int(6 * Rnd + 1)   '产生1到6之间的随机数
    response = MsgBox(myNum & "想要另一个数吗?", vbYesNo)
Loop
 
Dim check, counter
check = True : counter = 0
Do
    Do While count < 20
        counter = counter + 1  '增加计数器
        If counter = 10 Then
            check = false
            Exit Do   '终止内循环
        End If
    Loop
Loop Until Not check

8.2. While…Wend语句

当条件为True时循环,语法结构如下:

1
2
3
While condition
    [statements]
Wend

主要参数:

  • condition:数值或字符串表达式,其值为True或False。如果condition为Null,则condition被当作False。
  • statements:当condition为True时被重复执行的一条或多条命令。

While…Wend没有Exit语句,从头一直循环到尾,若要在中途退出,则需用Do…Loop语句。

8.3. For…Next语句

指定循环次数,使用计数器重复运行语句,语法结构如下:

1
2
3
4
5
For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next

主要参数:

  • counter:用做循环计数器的数值变量。这个变量不能是数组元素或用户自定义类型的元素。
  • start:counter的初值。
  • end:counter的终值。
  • step:counter的步长。如果没有指定,则step的默认值为1。

8.4. For Each…Next语句

对于集合中的每项或数组中的每个元素,重复执行一组语句,语法结构如下:

1
2
3
4
5
For Each element In group
    [statements]
    [Exit For]
    [statements]
Next [element]

主要参数:

  • element:用来枚举集合或数组中所有元素的变量。对于集合,element可能是Variant变量、通用Object变量或任意指定的Automation对象变量。对于数组,element只能是Variant变量。
  • group:对象集合或数组的名称。

9. 过程

在VBScript中,过程被分为两类:Sub过程和Function过程。

9.1 Sub过程

语法结构如下:

1
2
3
4
5
[Public [Default] | Private] Sub name [(arglist)]
    [statements]
    [Exit Sub]
    [statements]
End Sub

主要参数:

  • Public:表示Sub过程可被所有脚本中的所有其他过程访问。
  • Default:只与Class块中的Public关键字连用,用来表示Sub过程是类的默认方法。如果在类中指定了不止一个Default过程,就会出错。
  • Private:表示Sub过程只可被声明该过程的脚本中的其他过程访问。
  • name:Sub的名称,遵循标准变量命名规则。
  • arglist:代表在调用时要传递给Sub过程的参数的变量列表。用逗号隔开多个变量。其语法为:[ByVal | ByRef] varname[()],ByVal表示该参数是按值传递的,ByRef表示该参数按引用传递,varname代表参数的变量名称。

如没有显式地指定使用Public或Private,则Sub过程默认为Public。调用Sub过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用Call语句,但如果使用了此语句,则必须将所有参数包含在括号之中。调用Sub过程的两种方式。一种使用Call语句;另一种则不使用。两种方式效果相同,如:Call MySub(a, b)或MySub a, b。

9.2 Function过程

语法结构如下:

1
2
3
4
5
6
7
[Public [Default]| Private] Function name [(arglist)]
    [statements]
    [name = expression]
    [Exit Function]
    [statements]
    [name = expression]
End Function

主要参数:

  • Public:表示Function过程可被所有脚本中的所有其他过程访问。
  • Default:只与Class块中的Public关键字连用,用来表示Function过程是类的默认方法。如果在类中指定了不止一个Default过程,就会出错。
  • Private:表示Function过程只可被声明该过程的脚本中的其他过程访问。
  • name:Function的名称,遵循标准变量命名规则。
  • arglist:代表在调用时要传递给Function过程的参数的变量列表。用逗号隔开多个变量。其语法为:[ByVal | ByRef] varname[()],ByVal表示该参数是按值传递的,ByRef表示该参数按引用传递,varname代表参数的变量名称。

如没有显式地指定使用Public或Private,则Function过程默认为Public。调用Function过程时,函数名必须用在变量赋值语句的右端或表达式中,如:b = MyFunction(a)。要从函数返回一个值,只需将值赋给函数名。在过程的任意位置都可以出现任意个这样的赋值。

9.3 Sub与Function的区别

  • Sub没有返回值,而Function有返回值。
  • Sub不能放在表达式中,而Function可以。
阅读更多
个人分类: QTP
想对作者说点什么? 我来说一句

QTP自动化测试进阶

2015年08月18日 78.41MB 下载

QTP自动化测试VBScript基础

2013年07月17日 15KB 下载

Scripting QTP

2011年10月11日 9.25MB 下载

QTP自动化测试基础入门教程

2013年06月23日 2.85MB 下载

QTP自动化测试教程

2017年11月27日 13.87MB 下载

没有更多推荐了,返回首页

不良信息举报

QTP自动化测试之VBScript基础(下)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭