说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/103731397

一、VBScript 基础知识

说明:VB 就是Visual Basic编程语言的简写(俗称),VBScript就是VB演变的脚本语言;就类似Java和JavaScript一样的道理;QTP支持的编程语言就是VBScript

1.弹窗输出结果

1.1 msgbox

  • message box 的缩写,是一个系统函数,属于模式窗口

  • msgbox “窗口提示文字”,图标+按钮类型,“窗口标题”
    √     不能加括号;
    √     提示文字使用常变量均可;
    √     图标类型
           ✰     16:出错图标
           ✰     32:疑问图标
           ✰     48:警告图标
           ✰     64:友好消息
    √     按钮类型
           ✰     0:只有确定
           ✰     1:确定、取消
           ✰     2:中止、重试、忽略
           ✰     3:是、否、取消
           ✰     4:是、否
           ✰     5:重试、取消

  • 返回值变量=msgbox(“窗口提示文字”,图标+按钮类型,“窗口标题”)
    √     括号不能省略。
    √     返回值
           ✰     确定:1
           ✰     取消:2
           ✰     中止:3
           ✰     重试:4
           ✰     忽略:5
           ✰     是:6
           ✰     否:7

举例:

  • 如在QTP中新建测试,通过msgbox弹出提示信息(数字和字符串都行)
    t在这里插入图片描述
  • 通过msgbox弹出输出窗口内容和窗口标题,而窗口图标没有,所以就,省略不写即可
    在这里插入图片描述
  • 添加图标和按钮,文章中列出的常用按钮和图片可随意组合,博主就截两个图演示,其他的可以自己测试
    在这里插入图片描述
    在这里插入图片描述
  • 打印出操作对应按钮的返回值,打印第一个变量a为确定按钮的返回值,需要注意获取返回值也就是复制时,msgbox后面需要加括号
    在这里插入图片描述
  • 打印第二个变量b为取消按钮的返回值,其他的可以测试点击某个按钮来打印出其返回值
    在这里插入图片描述
    在这里插入图片描述

1.2 print

  • print 常变量
    √     是一个系统函数,属于非模式窗口,可以把以前的结果与现在的放到一起显示;
    √     不能加括号。

举例:

  • 在脚本中使用print命令打印出hello world
    在这里插入图片描述
  • 添加打印123456常量,如下
    在这里插入图片描述
  • 注意:测试结果窗口不用关闭的情况下也可以操作QTP,但是会导致上一次的结果与现在的结果放在一起显示,现在再次运行脚本
    在这里插入图片描述

2.变量、常量和数组

2.1 变量

  • 变量名=值
    √     不需要声明;
    √     字符、字符串需要使用""定界
    √     日期需要使用##定界
    √     数值数据不能使用定界符

举例:

  • 直接打印变量
    在这里插入图片描述

2.2 系统常量

  • vbcrlf
    √     Carriage Return,Line Feed
    √     回车换行。

  • vbtab
    √     tab 键。
    √     说明
           ✰     vbcrlf 和 vbtab 均可以用于 msgbox 和 print 中。

  • 双引号转义
    √     不支持
    √     使用""

举例:

  • 使用msgbox打印拼接字符串
    在这里插入图片描述
  • 使用msgbox打印字符串换行显示
    在这里插入图片描述
  • 使用msgbox打印字符串之间空格隔开显示
    在这里插入图片描述
  • VBScript转义
    在这里插入图片描述

2.3 数组

  • 数组定义
    √     dim 数组名(数组最大下标)
           ✰     dimession:维数、维度
           ✰     必须使用 dim 声明
    √     数组名=array(元素 1,元素 2,…)

  • 引用数组元素
    √     数组名(下标)
    √     下标从 0 开始

  • ubound(数组名)
    √     返回数组中的最大下标

  • 动态数组
    √     dim 数组名()
    √     redim 数组名(最大下标)

举例:

  • 打印数组中的元素
    在这里插入图片描述
  • 使用Dim自定义动态数组,进行数组下标赋值并打印
    在这里插入图片描述
  • 使用ubound可以获取数组的最大下标,不管数组中有没有存放数据
    在这里插入图片描述
  • 输入数组中存放几个数据(元素),通过redim和ubound函数打印出数组中的存放的元素个数,通过调整redim来控制动态数组中元素
    在这里插入图片描述

3.系统函数

3.1 输入函数

变量=inputBox(“提示文字”,“窗口标题”)

  • 如下所示给输入框起名以及输入框提示文字
    在这里插入图片描述

3.2 查看数据类型函数

typeName(变量)

  • 输入汉字,打印出类型,在inputbox函数中不管输入什么都是字符串类型
    在这里插入图片描述

3.3 字符串函数

  • len(字符串)

  • left(字符串,个数)

  • right(字符串,个数)

  • mid(字符串,起始整数,个数)

  • trim(字符串)

  • chr(ASCII 码)
    √     chr(9)
           ✰     tab 键
           ✰     可用于 msgbox 和 print
    √     chr(10) & chr(13)
           ✰     回车换行
           ✰     仅用于 msgbox

  • asc(字符)
    √     获得 ASCII 码。

  • 数组名=split(字符串,“分隔符”,拆出的个数)
    √    &nbsp省略分隔符时,默认按空格拆,不含 Tab

举例:

  • 打印出字符串的长度,不区分中文英文,都是一个字节长度
    在这里插入图片描述
  • 使用left和right,截取字符串左边3个字符右边两个字符
    在这里插入图片描述
  • 使用mid从第二个字符开始取连续取三个
    在这里插入图片描述
  • 使用trim去掉首尾空格
    在这里插入图片描述
  • 使用chr(9)函数完成tab键操作
    在这里插入图片描述
  • 使用chr(10)&chr(13)完成回车换行操作
    在这里插入图片描述
  • 通过asc方法获取字符的ascall码
    在这里插入图片描述
  • 使用split函数将字符串按照,进行拆分
    在这里插入图片描述
  • 使用split进行按照,进行拆分成2部分,需要注意的是拆成2部分那么打印的res结果集中的元素下标不能超过2,即0,1,不然则会报错超出取值范围溢出
    在这里插入图片描述
  • 对于字符串中存在空格,可以不写拆分条件,默认按照空格进行拆分(tab键不支持)
    在这里插入图片描述

3.4 日期时间函数

  • now()
  • date()
  • year()
  • month()
  • day()
    在这里插入图片描述

3.5 逻辑函数

  • isdate(数据)

  • isnumeric(数据)

  • 使用##来验证是否属于日期格式,最后再通过isdate来进行判断
    在这里插入图片描述
    在这里插入图片描述

  • 通过isdate函数验证字符串
    在这里插入图片描述
    在这里插入图片描述

  • 使用isnumeric验证实数(只要是能转成实数的都行)
    在这里插入图片描述

3.6 类型转换函数

  • cbyte
    √     范围 0~255

  • cint
    √     范围:-32768~32767

  • clng
    √     范围:-2^31 ~ 2^31,long长整型

  • cdbl
    √     double浮点类型

举例:

  • 使用cbyte演示不同数据
    在这里插入图片描述

3.7 随机数函数

  • randomNumber(起始值,结束值)
    在这里插入图片描述

4.运算符

  • +
    √     左右均为字符串时,可以连接字符串
    在这里插入图片描述

  • -

  • *

  • /

  • mod
    √     数 1 mod 数 2

  • &
    √     连接字符串常变量
    在这里插入图片描述

  • =
    √     等于

  • <>
    √     不等于,不支持!=
    在这里插入图片描述

  • <、>、<=、>=

  • and、or、not
    √     与、或、非
    在这里插入图片描述

5.流程控制语句

5.1 if 分支

if 条件表达式 1 then
语句 1
elseif 条件表达式 2 then
语句 2

else
语句 n
end if

  • if 单分支
    在这里插入图片描述
  • if 双分支及多分支
    在这里插入图片描述

5.2 if 嵌套

  • 对代码进行优化使用if嵌套来完成输入值的一个判断,对于会编程的朋友来说显而易见
    在这里插入图片描述

5.2 select 分支

select case 表达式
case 值 1
语句 1
case 值 2
语句 2

case else
语句 n
end select

  • 使用select case来完成分数评分判断
    在这里插入图片描述
  • 优化处理代码,加上一个if嵌套,判断当输入的数字范围不在正常分数范围中则给出友好提示
    在这里插入图片描述

5.3 循环

5.3.1 while 循环

while 条件表达式

wend

  • 通过while循环完成输入一个数,完成从0开始到这个数的累加和
    在这里插入图片描述
5.3.2 for…next 循环

for
变量=初值
to
终值
step
步长

next

  • 通过for…next循环完成输入一个数,完成从1开始到这个数的累加和,step1 写不写无所谓,默认为步长1
    在这里插入图片描述
5.3.3 for each…next 循环

for each
变量名
in
数组名

next
在这里插入图片描述

  • 用户输入的相输入数的个数n,通过redim动态数据来控制数组最大下标为n-1,那么就可以控制循环的次数ubound从而达到控制用户第n个数
    在这里插入图片描述

6.异常处理语句

6.1 基本语法

on error resume next

可能出错的语句

if err.number=? then
错误处理
end if

6.2 err 对象

  • err 对象用于存储错误信息。
    √     err.description
           ✰     提供错误信息的具体内容。
    √     err.number
           ✰     提供唯一的错误号。

  • 如下测试除数为0时捕获的异常
    在这里插入图片描述

二、使用 VBScript 处理脚本

1.使用 if 解决脚本问题

  • 解决 Flight 中日期变动导致回放失败的问题。 策略就是获取当前的年月日+1则表示明天的日期时间,然后根据脚本中的要求,年份取前面2位,日和月都必须是2位数即5月为05,3日为03,那么不管什么时候运行脚本都保证是脚本中的日期为第二天
    在这里插入图片描述
  • 将函数放到脚本中,并修改脚本中的日期
    在这里插入图片描述
  • 运行脚本,没有任何问题,成功插入订单
    在这里插入图片描述

2.锁定键盘和鼠标

  • 在QTP执行过程中,如果人为不小心将被测软件或页面关闭,则会提示找不到对象,为了避免不小心的误操作,可以在脚本最上面对键盘和鼠标进行锁定
    在这里插入图片描述
  • 如果在某个过程中需要解锁,那么在脚本中相应位置加上该命令即可,需要注意的一点则是,在使用锁定键盘和鼠标之前,将脚本保存,不然如果脚本出错并且键盘鼠标被锁定,形成了死锁的状态,就导致之前辛辛苦苦编写的脚本丢失
    在这里插入图片描述

3.向结果报告中输出信息

  • Reporter.ReportEvent EventStatus, ReportStepName, Details
    √     EventStatus
           ✰     0 或 micPass:将本步骤的运行结果状态设置为”Pass” 。
           ✰     1 或 micFail:将本步骤的运行结果状态设置为”Fail” 。
           ✰     2 或 micDone:在报告中生成“完成”报告。
           ✰     3 或 micWarnings:在报告中生成“警告”报告,但是不会中断测试的运行,也不影响测试的 pass/fail status。
    √     ReportStepName
           ✰     在报告中显示的步骤名称(object name),为字符串。
    √     Details
           ✰     报告的详细信息。

  • 在脚本插入订单后补输出信息
    在这里插入图片描述
    在这里插入图片描述

  • 执行脚本,查看结果,查看脚本中设定的输出信息
    在这里插入图片描述

4.下拉列表和列表框的使用

4.1 存储列表对象

  • set 对象名=列表对象名
    √     对象不支持 for each next。
    在这里插入图片描述

4.2 存储列表中的内容为一个字符串

对象名.getContent
在这里插入图片描述

4.3 获取列表包含的项数

对象名.getItemsCount
在这里插入图片描述

4.4 获取选中项

对象名.getSelection
在这里插入图片描述

4.5 获取列表中的项目

  • 对象名.getItem(下标)
    √     下标从 0 开始

  • 【例 1】单独输出下拉列表中的所有项
    在这里插入图片描述

4.6 选取某项

  • 对象名.select "文字"或下标
  • 【例 1】随机选择航班
    在这里插入图片描述

5.判断对象是否存在

  • 对象名.exist(超时时间)
    √     在规定时间内判断对象是否存在。
    √     无返回值时不用括号。
    在这里插入图片描述

  • 【例 1】测试登录窗口的功能
    √     思路
           ✰     1、录制正确登录脚本。
           ✰     2、录制一个登录失败的脚本。
           ✰     3、添加检查点
                         ▲       若登录窗口出现,则检查 flight 窗口标题文字是否正确;否则,检查出错窗口中的文字是否正确

  • 首先打开flight登录界面,进行登录的各种试错,将提示信息粘贴到excel表格中
    在这里插入图片描述

  • 根据以上错误提示信息,编写QTP可以导入的测试用例
    在这里插入图片描述

  • 录制登录成功和失败的脚本
    在这里插入图片描述

  • 以订票窗口作为if判断条件,对登录失败的操作以及登录成功关闭窗口进行划分
    在这里插入图片描述

  • 设置错误窗口文本检查点
    在这里插入图片描述

  • 在对象库中修改名称
    在这里插入图片描述

  • 切换到关键字视图,对代理名称和密码进行参数化
    在这里插入图片描述

  • 在数据表中导入前面编写的excel用例
    在这里插入图片描述

  • 博主脚本中Window写成了windows,所以进行了修改
    在这里插入图片描述

  • 运行脚本,脚本没有问题,每条用例都能按顺序执行,但是每次执行用例时会出现停顿,因为每次点击确定后,首先会去检查航班预订的窗口等待时间为3秒
    在这里插入图片描述

  • 测试结果如下
    在这里插入图片描述

  • 将脚本进行优化,先判断航班窗口不存在,去执行检查点检查错误,最后去判断航班预订窗口存在则表示登录成功
    在这里插入图片描述

  • 其实以上的优化知识调换判断顺序,还是没有效果,关键是在于判断条件中的语句,直接改成Dialog(“登录”).Dialog(“航班预订”)检查是否存在错误对话框即可
    在这里插入图片描述

  • 再次运行脚本,比之前的脚本运行速度快了不是一个档次,查看结果
    在这里插入图片描述

  • 目前该脚本吃测试的是老版本4a,测试新版本4b(必须保证新版本4b与4a按钮啥的都是没有改动的不然无法使用之前自动化脚本运行测试)
    在这里插入图片描述

  • 再次运行脚本,查看结果也是没有任何问题的
    在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐