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

二、使用 VBScript 处理脚本

6.使用环境变量

6.1 查看内置环境变量

  • 注意
    √     内置环境变量区分大小写。

  • environment(“LocalHostName”)
    √     客户机主机名

  • environment(“OS”)
    √     操作系统名称

  • environment(“OSVersion”)
    √     操作系统版本

  • environment(“UserName”)
    √     计算机登录用户名

  • environment(“ProductDir”)
    √     QTP 的安装路径

  • environment(“ActionName”)
    √     操作/动作的名称

  • Environment(“TestIteration”)
    √     迭代次数,用于 Global 表

  • Environment(“ActionIteration”)
    √     迭代次数,用于 Global 以外的普通数据表

  • 在QTP设置中查看内置的环境变量
    在这里插入图片描述

  • 打印出主机名、系统、系统版本、用户名
    在这里插入图片描述

  • 设置脚本数据表从1行运行到3行,打印出迭代次数
    在这里插入图片描述

  • 运行脚本打印出来的迭代次数与实际一致
    在这里插入图片描述

  • 此时将数据表迭代设置从4运行到6,查看打印结果还正确,TestIteration用于global表中的运行的行数
    在这里插入图片描述

【例 1】使用环境变量控制打开软件一次。

  • 通过以上TestIteration例子,那么可以完成当数据表迭代次数为1时才打开软件其他则不重复打开软件,也就是说在数据表global中除了运行到第一行时需要打开软件其他则进行登录操作即可
    在这里插入图片描述

6.2 自定义环境变量赋值

environment(“变量名”)=值
【例 1】将代理名称存入环境变量。
在这里插入图片描述

7.使用脚本添加检查点

  • 对象名.checkProperty 属性名,属性值,超时时间
    √     在规定时间内检查对象属性是否符合指定值要求。
    √     加密数据的 text 属性无法获得。
    √     属性值一般使用
           ●     micGreaterThan(值)
           ●     micLessThan(值)
           ●     micGreaterThanOrEqual(值)
           ●     micLessThanOrEqual(值)
           ●     micNotEqual(值)
           ●     micRegExpMatch(值)

【例 1】检查输入错误账号后是否提示正确的错误信息。
Set cuo=dialog(“登录”).Dialog(“航班预订”).Static(“文本位置原始的显示文字”) cuo.CheckProperty “text”, “密码为 ““MERCURY”””,3

  • Static 标签文字必须入库;
  • 只能进行精确匹配。
  • 在脚本中使用命令添加检查点之前,需要将该检查点添加到对象库中,然后通过在脚本合适的位置进行添加
    在这里插入图片描述
  • 运行代码,检查结果预期一致
    在这里插入图片描述
    【例 2】检查机票数是否大于 0
    在这里插入图片描述
  • 运行脚本,查看结果显示检查通过
    在这里插入图片描述

8.在脚本中使用正则表达式

8.1 正则表达式对象

  • set 对象名=new regexp
    √     创建正则表达式对象

  • 对象名.pattern
    √     要查找的符合正则表达式要求的字符串

  • 对象名.ignoreCase
    √     忽略英文字母大小写
    √     默认区分大小写

  • 对象名.global
    √     true 表示找所有项
    √     默认 false 表示找第一项

  • 对象名.test(字符串)
    √     返回能否找到匹配字符串的布尔值

  • set 对象=对象名.execute(字符串)
    √     在字符串中进行查找,结果存入对象中

【例 1】在多行文本中查找指定子串的行

  • 首先准备多行字符串如下
    在这里插入图片描述
  • 创建正则表达式对象,匹配出ch开头不区分大小的写所有字符串
    在这里插入图片描述

8.2 使用正则表达式选择列表项

【例 1】使用正则表达式选择班次

  • 首先打印出航班列表中的每一项,但是这种是无法进行正则匹配的
    在这里插入图片描述
  • 通过打印航班窗口对象的GetContent内容,将多行字符串显示在一行中,而以上的方式是多行,那么就无法通过正则进行匹配
    在这里插入图片描述
  • 通过正则匹配打印出08点的航班,并进行选择
    在这里插入图片描述
  • 以上脚本如果正则没有匹配到,那么则会报错,为了防止出错,可以进行if判断,若匹配不成功 则选择第一个航班
    在这里插入图片描述

8.3 检查点中使用正则表达式

【例 1】检查输入错误账号后是否提示正确的错误信息。

  • 使用micRegExpMatch函数对检查的文本进行正则匹配
    在这里插入图片描述
  • 运行结果,检查通过
    在这里插入图片描述

9.使用脚本处理数据表

9.1 操作 sheet 表

  • 增加 sheet 表
    √     DataTable.AddSheet"表名"
    在这里插入图片描述
  • 获得/打开 Sheet 表
    √     DataTable.GetSheet "表名"或表编号
           ✰     编号从 1 开始
           ✰     表名区分大小写。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 删除 Sheet 表
    √     DataTable.DeleteSheet "表名"或表编号
           ✰     编号从 1 开始
    在这里插入图片描述

9.2 操作 sheet 表中的行和列

  • 增加参数/列
    √     DataTable.GetSheet("表名"或表号).AddParameter 参数名,值
           ✰     值必须加
           ✰     插入参数重名时,表中会自动增加一列,列名后自动加 1
           ✰     注意:使用命令操作数据表时,数据在代码运行时可见,结果分析中的运行时表格中可见。
    在这里插入图片描述
    在这里插入图片描述
  • 参数赋值/为指定列指定行赋值
    √     DataTable.GetSheet(“表名”).GetParameter(列号或"列名").ValueByRow(行号)=值
    在这里插入图片描述
  • 获得/读取参数(值)/读取指定列指定行的数据
    √     DataTable.GetSheet(表号).GetParameter(列号或"列名").ValueByRow(行号)
    在这里插入图片描述
    在这里插入图片描述
  • 获得参数名
    √     变量名=DataTable.GetSheet(“表名”).GetParameter(列号).Name
    在这里插入图片描述
  • 删除参数
    √     DataTable.GetSheet(“表名”). DeleteParameter "列名"或列号
           ✰     列号从 1 开始。
    在这里插入图片描述

9.3 统计 sheet 表中相关个数

  • 获得表总个数
    √     DataTable.GetSheetCount
    在这里插入图片描述
  • 获得参数总个数(列数)
    √     DataTable.GetSheet(表号).GetParameterCount
    在这里插入图片描述
  • 获得行数
    √     DataTable.GetSheet(表号).GetRowCount
    在这里插入图片描述

9.4 导入导出 sheet 表

  • 导出数据表
    √     DataTable.ExportSheet “excel 文件路径”,"表名"或表号
    在这里插入图片描述
  • 导入数据表
    √     DataTable.ImportSheet “excel 文件路径”,excel 工作表编号,“datatable 的表名”
           ●     excel 工作表编号表示 Excel 中第几个 sheet,编号从 1 开始,也可以写工作表的名字。
           ●     datatable 表名必须事先存在。
    在这里插入图片描述
    在这里插入图片描述

10.访问数据库

10.1 基本步骤

  • 创建数据库连接对象
    Set conn=CreateObject(“adodb.connection”)

  • 指定数据源
    conn.ConnectionString = "provider=OLEDB 驱动名称;Data Source=数据库地址;其他

参数

  • 连接数据库 conn.open
    √     连接状态 conn.state
           ✰     =1 成功
           ✰     =0 失败

  • 创建记录集对象
    Set rs=createObject(“adodb.recordset”)

  • 指定 sql 语句
    sql=“select order_number,customer_name from orders”

  • 打开表获得数据 rs.Open sql,conn,3,1
    √     3:向前向后的游标
    √     1:只读数据
    √     打开表后,如果表里有数据,则行指针默认指向第 1 行

  • 记录行数
    √     rs.recordcount
    在这里插入图片描述

  • 记录集指针/行指针
    √     表示正在处理的记录位置,简单说就是现在正在处理第几行
    √     rs.bof
           ✰     是否位于第一条记录之前
    在这里插入图片描述
    √     rs.eof
           ✰     是否位于最后一条记录之后
    在这里插入图片描述

  • 移动行指针
    √     rs.movePrevious
           ✰     指向前一行
    在这里插入图片描述
    √     rs.moveNext
           ✰     指向下一行
    在这里插入图片描述

  • rs(i)
    √     r获得当前行第 i 列的数据/值,i 从 0 开始
    √     r也支持 rs(“列名”)的写法
    在这里插入图片描述
    在这里插入图片描述

  • rs.Fields(i).name
    √     r获得第 i 列的列名
    在这里插入图片描述

  • 将数据显示在数据表中
    datatable.AddSheet “Flight”
    datatable.GetSheet(“Flight”).AddParameter rs.Fields(0).Name,rs(0) datatable.GetSheet(“Flight”).AddParameter rs.Fields(1).Name,rs(1)
    For i=2 to rs.RecordCount
           rs.MoveNext
           datatable.GetSheet(“Flight”).GetParameter(1).ValueByRow(i)=rs(0)        datatable.GetSheet(“Flight”).GetParameter(2).ValueByRow(i)=rs(1)
    Next
    在这里插入图片描述
    在这里插入图片描述

  • 关闭记录集和数据库
    √     rs.close
    √     conn.close

  • 释放记录集数据库对象
    √     Set rs = Nothing
    √     Set conn = Nothing
    在这里插入图片描述

10.2 不同数据库的连接字符串

  • 访问 Access2010 conn.ConnectionString=“provider=microsoft.ace.oledb.12.0;Data Source=E:\HP\QuickTest Professional\samples\flight\app\flight32.mdb”
    在这里插入图片描述

  • 访问 SQL Server 2008
    conn.ConnectionString=“Provider=SQLOLEDB.1;Data Source= 服务器地址 ; Persist Security Info=False;User ID=sa;password=数据库密码;Initial Catalog=数据库名”

  • 访问 Oracle11g
    conn.ConnectionString=“Provider=OraOLEDB.Oracle.1;User
    ID=system;Password=123456;Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 服 务 器 IP)(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = orcl)));Persist Security Info=False”

三、描述性编程

1.为什么使用描述性编程

  • 录制脚本会依赖于对象库,没有添加到对象库的对象在运行脚本时会出错。

  • 描述性编程不依赖于对象库的存在。

  • 使用菜单录制不成功时,可以考虑描述性编程。

2.直接描述

对象类型(“属性 1:=属性 1 的值”,“属性 2:=属性 2 的值”,…)
√     描述性编程具有“后续强迫性”,一旦语句使用了描述性编程,则该语句到结束必须一直都用描述性编程的方式。
√     如属性值中有( )等特殊字符,需要使用\进行转义。

3.描述性编程实战

3.1 文本框及按钮控件的描述性编程

  • 首先打开flight软件,通过探测器获取登录框的属性包括代理名称
    在这里插入图片描述
  • 同理密码跟代理名称一样输入登录下的只是名字不同,所以直接复制改名即可
    在这里插入图片描述
  • 确定为按钮,不是文本输入框,所以需要通过探测器探测出
    在这里插入图片描述
  • 运行脚本,成功登录
    在这里插入图片描述

3.2 对象属性值重复时的描述性编程

  • 同理和之前一样使用探测器获取窗口上的航班日期对象,运行时提示有多个对象匹配
    在这里插入图片描述
  • 原有可能是航班预订界面中存在多个航班日期对象,所以需要在winobject中添加类名Class Name的值来进行多项指定
    在这里插入图片描述

3.3 下拉列表及列表框的描述性编程

  • 同理编写起点和终点的脚本,并运行测试
    在这里插入图片描述
  • 点击航班——选择航班表——点击确定按钮
    在这里插入图片描述

3.4 控件中含特殊字符的描述性编程

  • 插入名称
    在这里插入图片描述
  • 对特殊字符进行转义
    在这里插入图片描述
  • 运行脚本,插入订单成功
    在这里插入图片描述
  • 最后关闭航班预订窗口
    在这里插入图片描述
  • 编写脚本和录制脚本不一样,录制脚本后会在对象库生成对象,而编写脚本却不会在对象库中生成对象
    在这里插入图片描述

四、自定义函数

1.sub 函数

sub 函数名(参数表)
       函数体
end sub

  • 无参数也须用括号。
  • 无返回值。
  • 调用
    √     无参数
           ✰     call 函数名
           ✰     或直接用函数名(括号可省)
    在这里插入图片描述
    √     有参数
           ✰     函数名(参数表)
                         ▲       直接写函数名调用函数时,括号用空格代替。
                         ▲       使用 call 调用时括号不能省略。
    在这里插入图片描述

2.function 函数

function 函数名(参数表)
       函数体
       函数名=返回值

end function

  • 有返回值,函数名即返回值,一般写法是“函数名=返回值”。
  • 调用
    √     变量=函数名(参数表)
           ✰     括号不能省略。
    在这里插入图片描述

3.函数复用

3.1 文件→新建函数库

在这里插入图片描述

  • 在新建的库中创建如下函数,并保存到桌面
    在这里插入图片描述

3.2 新建测试,导入函数

  • 新建测试,然后导入桌面上保存的库,在测试中进行调用
    在这里插入图片描述

五、批量运行测试

  • 开始菜单→程序→QTP→Tools→Test Batch Runner
    √     按顺序依次运行,不能同时运行。

  • 注意
    √     需要开放 QTP 允许外部工具调用的权限
    √     选项→运行→允许其它 HP 产品运行

  • 首先在桌面上准备两个脚本,并且保证这两个脚本运行没有问题,然后在选项中勾选其他测试组件
    在这里插入图片描述

  • 打开批量运行工具
    在这里插入图片描述

  • 添加测试脚本
    在这里插入图片描述

  • 点击运行按钮,则运行依次运行所有添加的脚本
    在这里插入图片描述

  • 查看结果只能通过打开桌面上的HP Run Results Viewer查看结果,一个一个的查看不能一次性查看所有运行的脚本结果
    在这里插入图片描述
    在这里插入图片描述

Logo

一站式 AI 云服务平台

更多推荐