一、VBS语言基础
  1.运算符和表达式
    (1)运算符
    (2)表达式
      a.数学表达式:由算术运算符连接,计算结果为数字
      b.字符串表达式:由字符串连接符连接,计算结果为字符串
      c.条件表达式:由关系运算符或逻辑运算符连接,计算结果为布尔值----重点!!

      Test10001_VBS基础_关系运算符_强制转换

'Dim a,b,c,d,e,f,g
'a=100
'b=99
'c="100"
'd="100"
'e="99"
'f="Hello"
'g="World"
'msgbox cstr(a)+f'100Hello

'msgbox a>b'True
'msgbox c<>d'False
'msgbox a=c'Flase数据子类型不同,不相等
'msgbox cint(a)=cint(c)'True
'msgbox cstr(a)=cstr(c)'True
'msgbox a>e'False???
'msgbox a>cint(e)'将e强制转换为integer,再比较大小
'msgbox f>g'False

'msgbox 10/3
'msgbox cint(10/3)'3
'msgbox 10/7
'msgbox cint(10/7)'1
'msgbox cint(10.56)'11
'msgbox cint(10.500001)'11
msgbox cint(10.5)'10
msgbox cint(8.5)'8
msgbox cint(6.5)'6
msgbox cint(11.5)'12
msgbox cint(3.5)'4
msgbox cint(1.5)'2

 

  2、强制转换子类型
    (1)cstr:强制转换为String子类型
      例:a=cstr(b)
    (2)cint:强制转换为Integer子类型
      例:a=cint(b)
        转换原则:
          a.当小数部分小于0.5时,舍掉
          b.当小数部分大于0.5时,进位
          c.当小数部分等于0.5时,取最接近的偶数作为结果。

        CBool Function | CByte Function | CCur Function | CDate Function | CDbl Function | CLng Function | CSng Function | CStr Function | Int, Fix Functions

      练习:录制Flight3个Action:登录、订票、退出,在订票Action中对订票的数据做DataTable参数化,其中航班在DataTable中准备选项编号。
        Test10002_Flight_订票_DataTable参数化

登录Action()
Dialog("Login").WinEdit("Agent Name:").Set "12345"
Dialog("Login").WinEdit("Password:").SetSecure "5a5eb3b62861ca09e91a9690d13c8327db9c7737"
Dialog("Login").WinButton("OK").Click

订票Action()
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select cint(DataTable("航班",dtLocalSheet))
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "ooo"
Window("Flight Reservation").WinButton("Insert Order").Click

退出Action()
Window("Flight Reservation").Close

 

  3.数组:用于存放一组数据
    (1)用法一:
      Dim 数组名称(最大下标)
        数组名称(下标)=值
      注意:下标从0开始,每个元素可以赋值任意子类型的数值。
      例:
        '用法一
          Dim stu(3)
          stu(0)="zhangsan"
          stu(1)="lisi"
          stu(2)="wangwu"
          stu(3)=100
          msgbox stu(1)
        Test10003_VBS基础_数组

'用法一
'Dim stu(3)
'stu(0)="zhangsan"
'stu(1)="lisi"
'stu(2)="wangwu"
'stu(3)=100
'用法二:
Dim stu
stu=array("zhagnsan","lisi","wangwu",100)
msgbox stu(3)

    (2)用法二:
      Dim 变量
      变量=array(值1,值2,值3,值4,值5)
      说明:变量就可以当做数据名称来使用。
      例:
        '用法二:
          Dim stu
          stu=array("zhagnsan","lisi","wangwu",100)
          msgbox stu(3)

      练习:录制两位数加法器加法计算后退出的步骤,将2个加数的数据提前存储在一个数组中,由数组元素提供加数数据。
      Test10004_两位数加法器_数组

'用法一:
'Dim num(1)
'num(0)="30"
'num(1)="80"
'用法二:
Dim num
num=array("30","80")
VbWindow("Form1").VbEdit("Text1").Set num(0)
VbWindow("Form1").VbEdit("Text2").Set num(1)
VbWindow("Form1").VbButton("计算(J)").Click
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

 

  4.输入输出
    (1)msgbox:弹出信息框输出内容,测试时一般用于调试代码时输出关键变量的当前值。
      语法:msgbox "内容"
    (2)inputbox:弹出输入框来接收用户的输入,一般用于和用户交互。
      语法:变量=inputbox("请输入……")
      注意:只有当用户点击“确定”后,才会返回输入框中的内容,如果点击“取消”或直接关闭输入框,都返回空字符串。
      例:
        'inputbox "请输入您的姓名:"
        Dim n'姓名
        n=inputbox("请输入您的姓名:")
        msgbox n
    (3)特点:inputbox和msgbox都会打断程序的执行,必须等待用户操作后才继续执行,自动化测试时,尽量减少输入输出框的使用。
    (4)msgbox的替换方案:QTP提供的打印日志功能,最终自动化测试代码中建议使用print代替msgbox
      语法:Print "内容"

      练习:不录制,书写代码实现:
        (1)使用两个Inputbox获得两个操作数,存储在一个数组中
          说明:运行时都输入整数(例如20和30)
        (2)对这两个数分别做乘法和加法计算,将结果存储在两个变量中
        (3)使用两个msgbox输出以下格式的信息
          例如:

            20乘以30等于600
            20加上30等于50
          Test10005_VBS基础_综合

Option Explicit
'练习:不录制,书写代码实现:
'(1)使用两个Inputbox获得两个操作数,存储在一个数组中
Dim num(1)
num(0)=Inputbox("请输入第一个数:")
num(1)=Inputbox("请输入第二个数:")
'说明:运行时都输入整数(例如20和30)
'(2)对这两个数分别做乘法和加法计算,将结果存储在两个变量中
Dim result1,result2'结果1和结果2
result1=num(0)*num(1)
result2=cint(num(0))+cint(num(1))
'(3)使用两个msgbox输出以下格式的信息
'例如:20乘以30等于600
'            20加上30等于50
msgbox num(0)&"乘以"&num(1)&"等于"&result1
msgbox num(0)&"加上"&num(1)&"等于"&result2

 

二、总结VBS语法规则
  1.总结VBS函数:
    (1)wait 5
    (2)msgbox "Hello"
    (3)a=Inputbox("请输入")
    (4)a=cint(b)
    (5)a=cstr(b)
    (6)a=array(1,6,8)


  2.VBS函数使用的语法规则:---非常重要!
    (1)如果函数无返回值,或有返回值但是不接收返回值时,将参数写在函数名称的空格后。
    (2)如果函数有返回值并且接收返回值,那么将参数写在函数名称后的小括号内。
      说明:除了函数,对象的方法也遵循这种语法规则。


  3.GetROProperty方法
    (1)作用:获得RO指定属性的当前值。
    (2)语法:变量=对象.GetROProperty("属性名称")
    (3)前提:该TO对象必须在对象仓库中存在
    (4)返回值:属性当前值(子类型是String)。
      例:
        num=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")

      练习:使用jack用户名登录Flight,订票后,获得新订单号,退出后,使用rose用户登录Flight,打开jack刚订的新订单号的票,再退出
      Test10006_Flight_GetROProperty

SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\HP\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").WinEdit("Agent Name:").Set "jack"
Dialog("Login").WinEdit("Password:").SetSecure "5a5efc499ef99cc3a3509a9dd5b95f25b33c87a0"
Dialog("Login").WinButton("OK").Click
wait 5
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Denver"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "20174   FRA   10:24 AM   DEN   11:09 AM   SR     $323.80"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "alice"
Window("Flight Reservation").WinButton("Insert Order").Click
wait 10
'获得新订单号
Dim num
num=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
print num
Window("Flight Reservation").Close
SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\HP\QuickTest Professional\samples\flight\app\","open"
Dialog("Login").WinEdit("Agent Name:").Set "rose"
Dialog("Login").WinEdit("Password:").SetSecure "5a5efcd5b7328b37323ce6442cfa0b1f87d7a9d8"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set num
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Window("Flight Reservation").Close

 

三、随机数参数化
  1.作用:做随机测试


  2.实现方式一:在关键字视图中,点击Value列的数据,点击其后的<#>按钮,在弹框中选择Parameter,选择下拉框中的Random Number,输入From下限和To上限值,点击OK
    缺陷:下限和上限不能输入负数


  3.实现方式二:在专家视图中,使用RandomNumber(下限,上限)的语法格式代替常量即可。


  4.注意:RandomNumber(下限,上限)的语法格式生成的数据子类型是Integer

    练习:录制Flight登录、订票、退出的步骤,订票时的数据做随机数参数化
    Test10007_Flight_随机数参数化

Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a5f09bbe317fe069bb1dc4a7facfffe5b6cea25"
Dialog("Login").WinButton("OK").Click
wait 8
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select RandomNumber(0,9)
Window("Flight Reservation").WinComboBox("Fly To:").Select RandomNumber(0,8)
Window("Flight Reservation").WinButton("FLIGHT").Click
Dim c'航班数(列表框的选项个数,items count属性值)
c=Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetROProperty("items count")
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select RandomNumber(0,c-1)
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "jack"
Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1
Window("Flight Reservation").WinEdit("Tickets:").Set cstr(RandomNumber(1,10))
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Close

      Dim c'航班数(列表框的选项个数,items count属性值)
      c=Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetROProperty("items count")
      Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select RandomNumber(0,c-1)

    练习:录制Flight登录-打开1-10之间随机编号的订单-退出,打开完订单后,退出前,使用msgbox输出“顾客x预定了y从z到w的k张票!”
    说明:x是顾客姓名、y是日期、z是FlyFrom、w是FlyTo、k是Tickets票数