• 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问候语呢?很简单,代码如下:

    MsgBox("Hello world!")
    MsgBox "Hello world!"
    result = MsgBox("Hello World!", vbOKOnly, "Greeting")
    MsgBox "Hello World!", vbOKOnly, "Greeting"

    既然在此出现的第一个函数是MsgBox,那么就简单介绍一下该函数,其签名如下:

    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语句强制显式声明所有变量。声明示例如下:

    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语句。示例代码如下:

    Dim i, conn, ui
    i = 0
    Set conn = CreateObject("ADODB.Connection")
    Set ui = New UserInfo

    4.5. 标量与数组

    只包含一个值的变量成为标量变量;有时候为了方便将一组相关值赋给一个变量,则成为数组变量。区别标量与数组的唯一方式是声明时数组变量名后面带有括号()。变量声明就不说了,前面已经提到,这里我们看看怎样声明一维数组及多维数组(最大60维——:)只要您能够理解)。

    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关键字,则在重新调整大小时保留数组的内容。

    Dim count, a()
    count = 9
    ReDim a(count)
    ReDim Preserve a(10)

    5. 常数

    常数在VBScript中是表示不变的值,用于代替数字或字符串。其内部定义了许多常数,都是以vb开头,例如在Hello World程序中涉及到的MsgBox常数“vbOKOnly”。除了MsgBox常数外,还有颜色常数、比较常数、日期和时间常数等等,详见参考文档。

    内部自带常数,我们可以直接使用。当自带常数不能满足我们的需求时,我们也可以自定义常数,在VBScript中是使用Const语句来定义常数,该语句的签名如下:

    [Public | Private] Const constname = expression

    主要参数:

    • constname:为常数名称,为了区分常数与变量,最好有一套自己的命名规则,这里推荐字母全大写,单词间用下划线分割;
    • expression:文字或其他常数,或包括除 Is 外的所有算术运算符和逻辑运算符的任意组合。

    常数默认是Public级别,您也可以指定为Private级别,在同一行中声明多个常数需要用逗号分割,常数声明中不能使用变量、自定义函数及内部函数。下面是常数的一些示例代码:

    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 运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。

  • 相关阅读:
    数据库——游标
    避免全表扫描的sql优化
    聚合索引(clustered index) / 非聚合索引(nonclustered index)
    [摘抄]Python内置的字符串处理函数整理
    Web 安全渗透方面的学习路线?
    [转载]从关系型数据库到非关系型数据库
    [转载]shell脚本
    关于工具面试题
    ES6之promise
    关于vue-router总结
  • 原文地址:https://www.cnblogs.com/known/p/2171647.html
Copyright © 2020-2023  润新知