QTP自动化测试之VBScript基础.docx
- 文档编号:6658380
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:14
- 大小:21.72KB
QTP自动化测试之VBScript基础.docx
《QTP自动化测试之VBScript基础.docx》由会员分享,可在线阅读,更多相关《QTP自动化测试之VBScript基础.docx(14页珍藏版)》请在冰豆网上搜索。
QTP自动化测试之VBScript基础
QTP自动化测试之VBScript基础
要想使用QTP进行自动化测试,必须了解VBScript这门语言,对于使用过ASP或VB开发的人来说,VBScript已经再熟悉不过了,但是没有接触过VBScript的同学也不要灰心,因为这门语言简单易学。
1.VBScript利器
2.HelloWorld
3.数据类型
4.变量
5.常数
6.运算符
1.VBScript利器
子曰:
工欲善其事,必先利其器。
学习一门语言自然是离不开工具及文档,有好的工具及文档在手,学习起来也会得心应手。
在此,我推荐大家一个很不错的编辑工具——VbsEdit,该工具既能编辑代码,又可调试代码,有不错的智能提示,还有很多示例代码。
可惜不是免费使用,不过网上已经有绿色版,您可以搜索下载。
若你已经安装了QTP,那么使用QTP工具也是一个不错的选择。
参考文档可以使用在线版《MicrosoftWindows脚本技术》,也可以从网上搜索下载CHM文件。
2.HelloWorld
每种语言的入门都是一样,从简单的HelloWorld开始,我们也不例外。
如何使用VBScript来弹出一个对话框显示HelloWorld问候语呢?
很简单,代码如下:
1
2
3
4
MsgBox("Helloworld!
")
MsgBox"Helloworld!
"
result=MsgBox("HelloWorld!
",vbOKOnly,"Greeting")
MsgBox"HelloWorld!
",vbOKOnly,"Greeting"
既然在此出现的第一个函数是MsgBox,那么就简单介绍一下该函数,其签名如下:
1
MsgBox(prompt[,buttons][,title][,helpfile,context])
主要参数:
∙prompt:
为要显示的消息,其他带[]参数为可选参数;
∙buttons:
为显示对话框按钮及类型,默认值为0,即只显示“确定”按钮;
∙title:
为对话框标题栏文字。
MsgBox函数也有返回值,当你点击确定或取消按钮时,其返回的值是不一样的。
其他详细内容,大家可以去查阅参考文档,这里就不逐一说明。
3.数据类型
VBScript只有一种数据类型——Variant,它是根据上下文来判断是数字还是字符串。
因为Variant是VBScript中唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类型。
为了进一步区分数据类型,它包含如下数据子类型:
子类型
描述
Empty
未初始化的Variant。
对于数值变量,值为0;对于字符串变量,值为零长度字符串("")。
Null
不包含任何有效数据的Variant。
Boolean
包含True或False。
Byte
包含0到255之间的整数。
Integer
包含-32,768到32,767之间的整数。
Currency
-922,337,203,685,477.5808到922,337,203,685,477.5807。
Long
包含-2,147,483,648到2,147,483,647之间的整数。
Single
包含单精度浮点数,负数范围从-3.402823E38到-1.401298E-45,正数范围从1.401298E-45到3.402823E38。
Double
包含双精度浮点数,负数范围从-1.79769313486232E308到-4.94065645841247E-324,正数范围从4.94065645841247E-324到1.79769313486232E308。
Date(Time)
包含表示日期的数字,日期范围从公元100年1月1日到公元9999年12月31日。
String
包含变长字符串,最大长度可为20亿个字符。
Object
包含对象。
Error
包含错误号。
您可以使用转换函数(CInt,CStr等等)来转换数据的子类型。
另外,可使用VarType函数返回数据的Variant子类型。
4.变量
4.1.变量声明
变量声明有两种方式——显式与隐式,显式使用Dim、Public、Private语句进行声明,隐式直接使用变量名。
使用隐式声明方式的习惯不好,因为这样有时会由于变量名拼错而导致程序运行出现意外,因此,最好在每个脚本开始第一行使用OptionExplicit语句强制显式声明所有变量。
声明示例如下:
1
2
3
4
Option Explicit
Dim i,conn '声明多个变量时用逗号隔开
Public UserName,Password
Private m_id
注意:
在VBScript中,变量名是不区分大小写,即userName与UserName是指同一个变量。
4.2.命名规则
VBScript中变量命名是有其规则标准的,变量命名必须遵循:
∙第一个字符必须是字母。
∙不能包含嵌入的句点。
∙长度不能超过255个字符。
∙在被声明的作用域内必须唯一。
4.3.作用域与存活期
变量的作用域由声明它的位置所决定。
如果在过程中声明的,则只有该过程可以使用,即过程级变量;如果在过程之外声明的,则该变量可以被脚本中所有过程所使用,即Script级变量。
变量所存在的时间为存活期。
Script级变量的存活期为从被声明开始,直到脚本运行结束为止;过程级变量的存活期仅是过程被调用执行开始到结束的时间。
不同的过程可以使用相同的变量名,因为局部变量只有声明它的过程才能识别。
4.4.变量赋值
给变量赋值很简单,使用等号进行赋值,等号左边为变量名,右边为变量值。
若该变量是对象引用级别的,则需使用Set语句。
示例代码如下:
1
2
3
4
Dim i,conn,ui
i=0
Set conn=CreateObject("ADODB.Connection")
Set ui=New UserInfo
4.5.标量与数组
只包含一个值的变量成为标量变量;有时候为了方便将一组相关值赋给一个变量,则成为数组变量。
区别标量与数组的唯一方式是声明时数组变量名后面带有括号()。
变量声明就不说了,前面已经提到,这里我们看看怎样声明一维数组及多维数组(最大60维——:
)只要您能够理解)。
1
2
3
4
5
6
7
8
9
Dim a(9),table(2,3)
a(0)=1
...
a(9)=11
MsgBox(a
(1)) '输出数组变量值
table(0,0)=1
...
table(2,3)=10
我们也可以声明动态数组(在运行脚本时大小发生变化的数组),使用Dim或ReDim语句,但括号中不包含任何数字。
要使用动态数组,必须随后使用ReDim确定维数和每一维的大小。
若同时使用Preserve关键字,则在重新调整大小时保留数组的内容。
1
2
3
4
Dim count,a()
count=9
ReDim a(count)
ReDim Preserve a(10)
5.常数
常数在VBScript中是表示不变的值,用于代替数字或字符串。
其内部定义了许多常数,都是以vb开头,例如在HelloWorld程序中涉及到的MsgBox常数“vbOKOnly”。
除了MsgBox常数外,还有颜色常数、比较常数、日期和时间常数等等,详见参考文档。
内部自带常数,我们可以直接使用。
当自带常数不能满足我们的需求时,我们也可以自定义常数,在VBScript中是使用Const语句来定义常数,该语句的签名如下:
1
[Public |Private]Const constname=expression
主要参数:
∙constname:
为常数名称,为了区分常数与变量,最好有一套自己的命名规则,这里推荐字母全大写,单词间用下划线分割;
∙expression:
文字或其他常数,或包括除 Is 外的所有算术运算符和逻辑运算符的任意组合。
常数默认是Public级别,您也可以指定为Private级别,在同一行中声明多个常数需要用逗号分割,常数声明中不能使用变量、自定义函数及内部函数。
下面是常数的一些示例代码:
1
2
3
Const PI=3.14 '常数默认为公有。
Private Const STEP_APPLY="Apply" '定义私有常数。
Const STEP_APPLY="Apply",PI =3.14 '在一行上定义多个常数。
6.运算符
VBScript有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。
当表达式中含有多个运算符时,它们的运算优先级是:
算术运算符>比较运算符>逻辑运算符。
所有比较运算符的优先级相同,算术运算符和逻辑运算符的优先级如下所示:
6.1.算术运算符
描述
符号
求幂
^
负号
-
乘
*
除
/
整除
\
求余
Mod
加
+
减
-
字符串连接
&
字符串连接(&)运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。
6.2.逻辑运算符
描述
符号
逻辑非
Not
逻辑与
And
逻辑或
Or
逻辑异或
Xor
逻辑等价
Eqv
逻辑隐含
Imp
6.3.比较运算符
描述
符号
等于
=
不等于
<>
小于
<
大于
>
小于等于
<=
大于等于
>=
对象引用比较
Is
Is运算符是对象引用比较运算符。
它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。
要想使用QTP进行自动化测试,必须了解VBScript这门语言,对于使用过ASP或VB开发的人来说,VBScript已经再熟悉不过了,但是没有接触过VBScript的同学也不要灰心,因为这门语言简单易学。
7.条件语句
8.循环语句
9.过程
7.条件语句
VBScript中可以使用以下条件语句:
∙If…Then…Else语句
∙SelectCase语句
7.1.If…Then…Else语句
If…Then…Else语句结构如下:
1
If conditionThen statements[Else elsestatements]
或者使用块形式
1
2
3
4
5
6
7
If conditionThen
[statements]
[ElseIf condition-nThen
[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 '块形式 If i=100Then c=True i=0 End If '2.条件为True和False时 If user.UserName="admin" Then showAdminPage=True Else showAdminPage=False End If '3.对多个条件判断 If value=0Then MsgBox(0) ElseIf value=1Then MsgBox(9999) Else MsgBox("输入不合法! ") End If 7.2.SelectCase语句 语法结构如下: 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中的任意部分匹配时,执行的一条或多条语句。 SelectCase结构提供了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语句 ∙ForEach...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时被重复执行的一条或多条命令。 ExitDo可以退出循环体,循环可以嵌套使用。 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=10Then 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=startTo end[Step step] [statements] [Exit For] [statements] Next 主要参数: ∙counter: 用做循环计数器的数值变量。 这个变量不能是数组元素或用户自定义类型的元素。 ∙start: counter的初值。 ∙end: counter的终值。 ∙step: counter的步长。 如果没有指定,则step的默认值为1。 8.4.ForEach…Next语句 对于集合中的每项或数组中的每个元素,重复执行一组语句,语法结构如下: 1 2 3 4 5 For Each elementIn group [statements] [Exit For] [statements] Next [element] 主要参数: ∙element: 用来枚举集合或数组中所有元素的变量。 对于集合,element可能是Variant变量、通用Object变量或任意指定的Automation对象变量。 对于数组,element只能是Variant变量。 ∙group: 对象集合或数组的名称。 9.过程 在VBScript中,过程被分为两类: Sub过程和Function过程。 9.1Sub过程 语法结构如下: 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语句;另一种则不使用。 两种方式效果相同,如: CallMySub(a,b)或MySuba,b。 9.2Function过程 语法结构如下: 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.3Sub与Function的区别 ∙Sub没有返回值,而Function有返回值。 ∙Sub不能放在表达式中,而Function可以。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QTP 自动化 测试 VBScript 基础