Vbs(Vbscript)脚本常用操作合集(QTP(UTF)自动化测试工具)

    背景:为测试某软件而编写了一个简单的测试脚本,现在整理里面用到的一些知识点做个记录,日后再写脚本时忘记的话可以查找此文。也分享给大家

目录

  • 1、语句注释
  • 2、变量
  • 3、函数
  •     3.1 定义函数
  •     3.2 调用函数  
  • 4、数组
  • 5、常用流程控制语句
  •     5.1 for循环
  •     5.2 wile循环
  •     5.2 wile循环
  •     5.4 if判断
  • 6、语句执行等待
  • 7、对电脑应用程序的操作
  •     7.1 关闭windows应用进程
  •     7.2 运行windows应用程序
  •     7.3 复制Windows文件
  • 8、比较两个对象(数字、字符/字符串)的值是否相等
  •     8.1 正则表达式原型
  •     8.2 InStr函数
  • 9、对Excel的操作
  •     9.1 设置Excel內容
  •     9.2 获取Action1表中的某列数据
  • 10、在当前位置导入其他vbs脚本
  • 11、测试对象的常用操作
  •     11.1 提高测试对象的匹配准确率
  •     11.2 把焦点定在当前测试对象上
  •     11.3 获取对象指定属性的值
  •     11.4 判断某测试对象是否存在
  •     11.5 SwfTable的使用
  •     11.6 设置编辑框的值
  •     11.7 获取ListView对象的行数
  •     11.8  获取 n行,N列 单元格的值
  • 12、模拟电脑键盘输入

 

正文

1、语句注释
      使用'号,只能注释当前行
    
2、变量
      原型: Dim 变量名:变量名
      例子: Dim A:A=0                                            '定义变量A,初始值为0。语句结尾无需分号


3、函数
    3.1 定义函数
          原型:
            (1)Function 函数名()
                '函数体
               End Function
                 
            (2)Sub 函数名()
                '函数体
               End Sub
                
          例子:
            Sub Test()                                                     '定义Test函数
             '函数体
            End Sub
                
        注:Function和Sub 的区别是Function函数有返回值,而Sub 函数没有返回值。

    3.2 调用函数    
            在需要调用的位置直接写 函数名() 即可。
        
        例子:
            '语句1
             ...
             Test()                                                              '调用Test函数             
            '语句..

            
4、数组
      原型:
        array(元素1, 元素2, 元素3, ...)

      列子:
        Dim Arr_DateFormat:Arr_DateFormat = array("YY-MM-DD","YY/MM/DD"")     '定义并初始化日期格式Arr_DateFormat数组
        Arr_DateFormat(i)                                                                                                      '使用第i个元素
        
        
5、常用流程控制语句
       5.1 for循环
                   指定循环次数,使用计数器重复运行语句。
            原型:
                    For Iterator=i to mCount step 1                    
                        '循环体                                    
                   Next
            
                   'Iterator=i:代表从数字i开始递增。Iterator只是变量名,可修改为其他名称,如: begin=i
                   'mCount:  当i大于mCount时就停止循环
                   'step:        每次递增的大小(可省略,默认为1)
                  'Next:         循环结束
        
          例子:        
                  Dim mCnt:mCnt=5        
            
                  For begin=1 to mCnt step 1                                        '从1开始递增,每次递增1,begin大于5时跳出循环
                      '循环体                                    
                 Next                                                                                  '循环结束,将执行下一条语句

            
    5.2 wile循环
                  当条件为true时执行循环体
          原型:
                  while(条件)
                       '循环体
                 Wend
           
          例子:
                  Dim i:i=0
                  While i <> 10                                                                 '判断i的值是否等于10,如果不等就执行循环体
                  i=i+1                                                                               '循环体,每循环1次i递增1
                 Wend
         
    5.3 do..Loop循环
                 先执行循环体,然后再判断条件,当条件为true时,退出循环        
           原型:
                   Do
                       '循环体
                   Loop Until 条件
          
            例子:
                    Dim a:a=2
                    Do
                             MsgBox a                                                             'MsgBox弹出提示框显示a的值
                               a = a -1
                     Loop Until a = 0                                                           '直到a变量为0时,否则一直循环
        
    5.4 if判断
              当条件为true时执行程序模块
        原型:
            If 条件1 Then                                                                       '判断[条件]是否为真
               '程序模块1                                                                       '满足条件后将要执行的内容
               
            ElseIf 条件2 Then                                                                '当第条件1不满足要求时,判断条件2
               '程序模块2                                                                        '满足条件后将要执行的内容
               
            ElseIf 条件.. Then                                                                '当第条件2不满足要求时,判断条件..
               '程序模块..                                                                         '满足条件后将要执行的内容
            End If
        
        例子:
            If IfpassWd<>0 Then                                                            '如果变量passWd不等于0,则执行
                '程序模块                                                                           '满足条件后将要执行的内容                    
            End 
            

6、语句执行等待
       wait 5                                                                                           '在脚本当前执行到的位置等待5秒    
    
7、对电脑应用程序的操作
      7.1 关闭windows应用进程
        systemUtil.closeProcessbyname("excel.exe")                        '关闭Windows中的Excel进程

      7.2 运行windows应用程序
        原型:SystemUtil.Run file,[params],[dir],[op],[mode] 
                'file             文件名
                'params     可选,如果file参数中指定的是一个可执行文件,则可以使用params参数来指定该可执行文件的运行参数
                'dir              可选,程序的路径
                'op              可选,将要被执行的动作。如果该参数值为空,则默认操作为open操作。
                'mode         可选,指定应用程序打开时的显示模式。可以指定以下几种打开模式。默认模式是1。
            
        例子:(1)打开cmd,并往里面输入指令
                
                 Dim IPAdd:IPAdd=192.168.1.201                                                                   'IP地址变量定义初始化
                
                 SystemUtil.Run "cmd.exe","","C:\WINDOWS\system32","open"                  '开启cmd
                 wait 2                                                                                                                    '等待2秒,等cmd窗体开启
                 Window( "object class:=ConsoleWindowClass" ).Type "ping "&IPAdd        '执行 ping 192.168.1.201 指令
                 Window( "object class:=ConsoleWindowClass" ).Type "dir"                         '执行 dir 指令
                 SystemUtil.CloseProcessByName("cmd.exe")                                               '关闭Cmd.exe

        
              (2)用notepad++程序打开Test.txt文件
                 SystemUtil.run "notepad++.exe","C:\Users\Administrator\Desktop\Test.txt"
                 
    7.3 复制Windows文件
        例子:
            Dim RltPath:RltPath= environment("TestDir")&"\Rlt.xls"                                      '文件1的位置
            Dim RltPath_bk:RltPath_bk= environment("TestDir")&"\Rlt_bk.xls"                   '文件2
            
            SET FSO=CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT")    
            FSO.COPYFILE RltPath,RltPath_bk                                                                     '把Rlt.xls文件复制为Rlt_bk.xls    
    
    
8、比较两个对象(数字、字符/字符串)的值是否相等
    8.1 正则表达式原型
        原型:
            Function IsRegMatch(str1,str2)    
               Dim regEx
               Set regEx = New RegExp
               regEx.Pattern = str1
               IsRegMatch = regEx.Test(str2)            
               Set regEx = nothing    
            End Function

        使用: 
            Dim A:A="hello"

            If  IsRegMatch(A,"hello") = true Then                                '如果A等于hello条件为真,则执行程序模块的内容
                '程序模块
            End If
            
    8.2 InStr函数
        函数原型:InStr([start,]string1,string2[,compare])
                    'start     可选。规定每次搜索的起始位置。默认是搜索起始位置是第一个字符。如果已规定compare参数,则必须有此参数。
                    'string1 必填。需要被搜索的字符串。
                    'string2 必填。需搜索的字符串。
                    'compare 必填。规定要使用的字符串比较类型。默认是0
                                                 0 = vbBinaryCompare - 执行二进制比较。
                                                 1 = vbTextCompare - 执行文本比较

        函数返回值:InStr 函数可返回一个字符串在另一个字符串中首次出现的位置。
                    0:        string1、string2为"" 或 string2没有找到 或 start>string1的长度
                    Null:    string1 或 string2 为 Null
                    start:      string2 为 ""
                    其他数字:string1中找到了string2并返回找到匹配字符串的位置。
    
        例子:
                (1) If InStr(Succ,"成功") > 0 Then                                '如果返回值>0则代表Succ变量的值为"成功"
                       '程序模块
                    End If 
                    
                (2) If InStr("ABC","B") > 0 Then                                    '如果返回值>0则代表B在字符串ABC中
                        '程序模块
                    End If 

                    
9、对Excel的操作
    9.1 设置Excel內容
        Sub initExl()
            Dim RltPath:RltPath= environment("TestDir")&"\Rlt.xls"
            Set mExcel = createobject("excel.application")                          '创建Excel对象
            Set mWorkbook = mExcel.Workbooks.Open(RltPath)               'Excel文件路径及文件名
            Set mSheet = mWorkbook.Sheets("设备管理模块")                  '设置Sheet
            Dim lie:lie = 9                                                                                   'Excel第9列为止
            Dim hang:hang=8                                                                            'Excel第8行为止
            For h = 3 To hang Step 1                                                                '循环行,一行的每列都循环后再到下一行
                For l = 2 To lie Step 1                                                                  '循环列
                    mSheet.cells(h,l) = 0                                                                '把第3行、第2列开始的每个单元格值置0
                Next                                                                                               '列循环结束
            Next                                                                                                   '行循环结束

            mWorkbook.Close(true)                                                                 '保存且关闭工作簿
            mExcel.Quit                                                                                      '退出Excel
            Set mSheet=Nothing                                                                       '释放变量
            Set mExcel=Nothing                                                                        '释放变量
            Set mWorkbook=Nothing                                                                '释放变量
        End Sub
        
            mSheet.cells(行号,列号)=值                                                             '设置指定单元格的值
        
    9.2 获取Action1表中的某列数据
        Dim val:val = datatable("Name","Action1")                                          '获取Action1的表中Name列的值并赋值给val
    
    
10、在当前位置导入其他vbs脚本
    在当前位置展开导入的脚本,类似于把目标脚本的内容复制到当前位置。
    例子:LoadFunctionLibrary "D:\QTP\li\test.vbs"
    
    
11、测试对象的常用操作
    11.1 提高测试对象的匹配准确率
            有时为了提高对象的匹配准确率,可多加几个熟悉。
        
        原型:
            测试对象类型("属性:=值","属性:=值", ...)
        例子:
            SwfWindow("程序").SwfLabel("swfname:=label","text:=设备管理").Click        'swfname和text属性的值都对了才点击Click
        
    11.2 把焦点定在当前测试对象上
        SwfWindow("程序").SwfObject("设备操作").Object.Focus                        '焦点定位
        
    11.3 获取对象指定属性的值
        SwfWindow("程序").SwfWindow("FrmInformation").SwfObject("swfname:=valInfo").GetROProperty("text")    '获取文本属性的值
    
    11.4 判断某测试对象是否存在        
        原型:Exist(秒)
        例子:SwfWindow("程序").SwfWindow("FrmConfirm").Exist(3) = true 

                    '判断对象在3秒内是否在应用程序中存在,3秒内的任何时候若存在了,'则立即完成该语句并返回True(最短约0秒)
        
    11.5 SwfTable的使用
         SwfWindow("XX").SwfTable("列表").SelectCell n行,N列                               '选定n行,N列的单元格
         
    11.6 设置编辑框的值
         SwfEdit("导入路径").Set
            
    11.7 获取ListView对象的行数
        SwfWindow("XX").SwfListView("测试状态").GetItemsCount                          '获取行数


    11.8  获取 n行,N列 单元格的值
        SwfWindow("XX").SwfListView("测试状态").GetSubItem(n,N)                        '获取 n行,N列 单元格的值
    
    
12、模拟电脑键盘输入
    Set WSObj = CreateObject("WScript.Shell")                                                         '创建WScript对象
    WSObj.SendKeys "{RIGHT}"                                                                                    '模拟按了键盘的 →右键
    WSObj.SendKeys "{LEFT}"                                                                                     '模拟按了键盘的 ←左键
    WSObj.SendKeys "ABCD"                                                                                      '模拟依次按了键盘ABCD键

你可能感兴趣的:(自动化测试)