关闭

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

476人阅读 评论(0) 收藏 举报
分类:

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

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

1. VBScript利器
2. Hello World
3. 数据类型
4. 变量
5. 常数
6. 运算符

1. VBScript利器

子曰:工欲善其事,必先利其器。学习一门语言自然是离不开工具及文档,有好的工具及文档在手,学习起来也会得心应手。在此,我推荐大家一个很不错的编辑工具——VbsEdit,该工具既能编辑代码,又可调试代码,有不错的智能提示,还有很多示例代码。可惜不是免费使用,不过网上已经有绿色版,您可以搜索下载。若你已经安装了QTP,那么使用QTP工具也是一个不错的选择。参考文档可以使用在线版《Microsoft Windows脚本技术》,也可以从网上搜索下载CHM文件。

2. Hello World

每种语言的入门都是一样,从简单的Hello World开始,我们也不例外。如何使用VBScript来弹出一个对话框显示Hello World问候语呢?很简单,代码如下:

1
2
3
4
MsgBox("Hello world!")
MsgBox "Hello world!"
result = MsgBox("Hello World!", vbOKOnly, "Greeting")
MsgBox "Hello World!", 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语句进行声明,隐式直接使用变量名。使用隐式声明方式的习惯不好,因为这样有时会由于变量名拼错而导致程序运行出现意外,因此,最好在每个脚本开始第一行使用Option Explicit语句强制显式声明所有变量。声明示例如下:

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开头,例如在Hello World程序中涉及到的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 运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:61094次
    • 积分:860
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:92篇
    • 译文:2篇
    • 评论:2条
    文章分类
    最新评论