zoukankan      html  css  js  c++  java
  • QTP(15)

    Test15001_两位数加法器

    Option Explicit
    Dim num1,num2,result,ex
    'result 实际结果  =  被测系统结果输入框中的值
    'ex 预期结果   =  num1 + num2
    num1=RandomNumber(-99,99)
    num2=RandomNumber(-99,99)
    VbWindow("Form1").VbEdit("Text1").Set Cstr(num1)
    VbWindow("Form1").VbEdit("Text2").Set Cstr(num2)
    VbWindow("Form1").VbButton("计算(J)").Click
    '被测系统在执行计算后,才显示计算结果
    '所以在计算步骤后,使用GetROProperty获取结果
    check num1,num2
    Function check(n1,n2)
    	ex=n1+n2
    	result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
    '	对比实际值与预期值是否一致
    	If Cint(result)=Cint(ex) Then
    		Reporter.ReportEvent micPass,"验证计算结果","一致!"
    	else
    		Reporter.ReportEvent micFail,"验证计算结果","不一致!"
    	End If
    End Function
    
    
    
    VbWindow("Form1").VbButton("重置(C)").Click
    VbWindow("Form1").VbButton("退出(E)").Click
    VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click


    一、Function函数、方法
      1、无参无返回值
        Function 函数名称()
        End Function
        函数名称()


      2、有参无返回值
        Function 函数名称(参数1,参数2,......)
        End Function
        函数名称 参数1,参数2,......


      3、有参有返回值
        Function 函数名称(参数1,参数2,......)
          函数名称=返回值
        End Function
        变量=函数名称(参数1,参数2,......)


      4、无参有返回值
        Function 函数名称()
          函数名称=返回值
        End Function
        变量=函数名称()
        Test15002_无参有返回值_Function案例

    '功能:计算
    '参数:无
    '返回值:计算结果
    Function sum()
    	Dim num1,num2
    	num1=Cint(Inputbox("请输入第一个数:"))
    	num2=Cint(Inputbox("请输入第二个数:"))
    	sum=num1+num2
    End Function
    
    msgbox sum()


        (1)定义:
          Function 函数名称()
            函数体
            函数名称=值
          End Function
        (2)调用:
          变量=函数名称()
          练习1:Flight4a
            要求:
              a.录制Flight4a的登录+购票+退出业务流程
              b.把代码分别封装在3个Function
                login
                buy
                logout
              c.实现代码执行登录->购票->购票->退出
              d.使用自定义检查点验证第二次购票的订单号比第一次大1
              e.使用for循环实现5次订票,验证每次订票都比上一次订票的订单号大1

                Function buy()
                  buy=order No.GetROProperty("text")
                End Function

          Test15003_无参有返回值_购票

    Dim first,seconde
    'first 保存第一次购票返回的订单号
    'seconde 保存第二次购票返回的订单号
    login()  
    'first=buy()   '第一次购票    68 
    'seconde=buy()  '第二次购票    69  -1
    '使用for循环购票5次票,调用buy() 5次
    'buy()=1
    'buy()=2
    'buy()=3
    'buy()=4
    'buy()=5
    '订单号(1,2,3,4,5)
    Dim orderNo(4)  '下标从0开始
    Dim i
    For i= 0 to 4
    	orderNo(i)=buy() 
    	If i>0 Then     '第1次返回的订单号   第2次返回的订单号
    							'数组前一个值             数组后一个值
    			If Cint(orderNo(i-1)+1)=Cint(orderNo(i)) Then
    				Reporter.ReportEvent micPass,"验证订单号","第二次比第一次大1"
    			else
    				Reporter.ReportEvent micFail,"验证订单号","不大1"
    			End If
    	End If
    Next
    
    logout()
    'If  Cint(first)=Cint(seconde)-1 Then
    '	Reporter.ReportEvent micPass,"验证订单号","第二次比第一次大1"
    'else
    '	Reporter.ReportEvent micFail,"验证订单号","不大1"
    'End If
    
    '1、login
    '功能:登录
    '参数:无
    '返回值:无
    Function login()
    	SystemUtil.Run "C:Program FilesHPQuickTest Professionalsamplesflightappflight4a.exe","","C:Program FilesHPQuickTest Professionalsamplesflightapp","open"
    	Dialog("Login").WinEdit("Agent Name:").Set "jack"
    	Dialog("Login").WinEdit("Password:").SetSecure "5a67eb6c4f97c3ac86d7559af33f4c12473bb2cc"
    	Dialog("Login").WinButton("OK").Click
    	wait 8
    End Function
    
    '2、buy
    '功能:购票
    '参数:无
    '返回值:插入订单后生成的订单号
    Function buy()
    	Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
    	Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
    	Window("Flight Reservation").WinComboBox("Fly To:").Select "Los Angeles"
    	Window("Flight Reservation").WinButton("FLIGHT").Click
    	Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
    	Window("Flight Reservation").WinEdit("Name:").Set "jack"
    	Window("Flight Reservation").WinButton("Insert Order").Click
    	wait 6
    	buy=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
    
    	Window("Flight Reservation").WinButton("Button").Click
    End Function
    
    '3、logout
    '功能:退出
    '参数:无
    '返回值:无
    Function logout()
    	Window("Flight Reservation").Close
    End Function

          练习2:Flight4a
            要求:
              a.录制Flight4a登录+购票+退出业务流程
              b.订票输入过期的日期再选择FlyFrom,使用自定义检查点验证提示信息
              c.将自定义检查点封装在Function中,无参无返回值
              d.保证脚本每天都能运行通过,所以检查点的提示信息日期部分应该是动态
          Test15004_Function练习_验证提示信息

    SystemUtil.Run "C:Program FilesHPQuickTest Professionalsamplesflightappflight4a.exe","","C:Program FilesHPQuickTest Professionalsamplesflightapp","open"
    Dialog("Login").WinEdit("Agent Name:").Set "Jack"
    Dialog("Login").WinEdit("Password:").SetSecure "5a6801062077f18cc5eae0605507ee0b8497972e"
    Dialog("Login").WinButton("OK").Click
    Window("Flight Reservation").ActiveX("MaskEdBox").Type "111117"
    Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
    checkInfo()
    Window("Flight Reservation").Dialog("Flight Reservations").WinButton("确定").Click
    Window("Flight Reservation").Close
    
    
    '功能:获取提示信息Function
    '参数:无
    '返回值:提示信息
    Function getInfo()
    	'获取当前日期   01/24/18   月/日/年
    	'msgbox date       '今天的日期
    	'msgbox year(date)   '年
    	'msgbox month(date)  '月
    	'msgbox day(date)  '日
    	Dim y,m,d
    	y=year(date)  '2018
    	m=month(date)  '1
    	d=day(date)   '24
    	y=mid(y,3)  '18
    	If Cint(m)<10 Then
    		m="0"&m   '01
    	End If
    	If Cint(d)<10 Then
    		d="0"&d    '02
    	End If
    '	把日期返回给Function函数getInfo
    	getInfo="Valid flight dates are after "&m&"/"&d&"/"&y&""
    	msgbox mydate	
    End Function
    
    '自定义检查点验证提示信息
    '参数:无
    '返回值:无
    Function checkInfo()
    	Dim ac,ex
    '	ac:实际结果
    '	ex:预期结果
    	ex=getInfo()
    	ac=Window("Flight Reservation").Dialog("Flight Reservations").Static("Valid flight dates are").GetROProperty("text")
    	If Cstr(ac)=Cstr(ex) Then
    		Reporter.ReportEvent micPass,"验证日期提示信息","正确"
    	Else
    		Reporter.ReportEvent micFail,"验证日期提示信息","失败"
    	End If
    End Function

            date

            '获取当前日期 01/24/18 月/日/年
            'msgbox date '今天的日期
            'msgbox year(date) '年
            'msgbox month(date) '月
            'msgbox day(date) '日
            Dim y,m,d
            y=year(date) '2018
            m=month(date) '1
            d=day(date) '24
            y=mid(y,3) '18
            If Cint(m)<10 Then
              m="0"&m '01
            End If
            If Cint(d)<10 Then
              d="0"&d '02
            End If
            mydate=""&m&"/"&d&"/"&y&""
            msgbox mydate

      5、变量的作用域
        主代码
        Function 1()
          a
        End Function
        Function 2(m)
          b
        End Function
        (1)在Function的函数体内定义的变量,作用域就在该Function内部,其他Function或主代码无此变量,不能使用
        (2)Function的形参变量作用域就在该Function内部,在其他Function或主代码都无此变量,不能使用
        (3)在Action内部主代码中定义的变量,作用域在该Action内部,包括Action内的所有Function都可以使用,在其他Action中无此变量,不能使用


      6、Action间的传参
        Action:购票生成订单号
        Action:打开订单需要订单号
        (1)通过DataTable传参
          a.在前一个Action中向DataTable表写入数据
            语法:DataTable("列名","表名")=值
          b.在后一个Action中读取DataTable表的数据
            语法:变量=DataTable("列名","表名")

        (2)通过环境变量传参
          a.在前一个Action中向环境变量写入数据
            语法:Environment("参数名")=值
          b.在后一个Action中读取环境变量中的数据
            语法:变量=Environment("参数名")

        (3)使用Action传参
          Action1 ->属性->Parameter->out
          Parameter("out")="mercury"
          Action2->属性->Parameter->in
          ->Call Properties->Parameter->in=out
          msgbox Parameter("in")


          a.在第一个Action为Parameter变量赋值
            语法:Parameter("变量")=值
          b.在第二个Action读取Parameter的值
            语法:变量=Parameter("变量名")

          练习3:Flight4a
            要求:

              a.录制Flight4a登录+购票+打开订单+退出业务流程
              b.分别使用3种传参的方式,实现打开订单时使用购票生成的订单号
          Test15005_Flight4a_Action传参订单号

    登录Action()
    SystemUtil.Run "C:Program FilesHPQuickTest Professionalsamplesflightappflight4a.exe","","C:Program FilesHPQuickTest Professionalsamplesflightapp","open"
    Dialog("Login").WinEdit("Agent Name:").Set "jack"
    Dialog("Login").WinEdit("Password:").SetSecure "5a6836099d2780743417f9b7340f765e2c108fb1"
    Dialog("Login").WinButton("OK").Click
    wait 6
    
    购票Action()
    Window("Flight Reservation").ActiveX("MaskEdBox").Click 0,5
    Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
    Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
    Window("Flight Reservation").WinComboBox("Fly To:").Select "London"
    Window("Flight Reservation").WinButton("FLIGHT").Click
    Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "20264   DEN   12:12 AM   LON   07:23 PM   AA     $112.20"
    Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
    Window("Flight Reservation").WinEdit("Name:").Set "jack"
    Window("Flight Reservation").WinButton("Insert Order").Click
    wait 6
    Dim orderNo
    '获取订票后生成的订单号
    orderNo=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
    ''1、DataTable传参
    'DataTable("订单号","购票")=orderNo
    ''2、Environment传参
    'Environment("No")=orderNo
    '3、Parameter传参
    Parameter("out")=orderNo
    
    打开订单Action()
    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 Parameter("in")'Environment("No")'DataTable("订单号","购票")
    Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
    
    退出Action()
    Window("Flight Reservation").Close

    二、DataTable表高级使用
      Test15006_两位数加法器_ImportSheet

    'DataTable.ImportSheet "文件名称","文件中的sheet名称","DataTable表单名称"
    DataTable.ImportSheet "C:data.xls","计算","Action1"
    
    SystemUtil.Run "D:两位数加法器V2.exe","","D:","open"
    VbWindow("Form1").VbEdit("Text1").Set DataTable("num1","Action1")
    VbWindow("Form1").VbEdit("Text2").Set DataTable("num2","Action1")
    VbWindow("Form1").VbButton("计算(J)").Click
    '获取当前DataTable运行行,也就是当前读取DataTable
    '的那行数据
    Dim row
    								'表	                              获取当前行
    row=DataTable.GetSheet("Action1").GetCurrentRow
    desktop.CaptureBitmap "D:计算结果"&row&".png",True
    VbWindow("Form1").VbButton("重置(C)").Click
    VbWindow("Form1").VbButton("退出(E)").Click
    VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click


      1、DataTable表的ImportSheet方法
        (1)作用:导入Excel指定表单中的数据,只在运行时导入
        (2)语法:DataTable.ImportSheet "文件名.xls","Excel表单名","DataTable表单名"
          如:把C盘下data.xls中的计算sheet页导入到DataTable的Action1表单中
            DataTable.ImportSheet "C:data.xls","计算","Action1"
        (3)注意:
          a.QTP10.0只支持.xls后缀的文件
          b.在Excel中准备数据时,第一行将作为DataTable中的列名
          c.运行代码时一定要关闭Excel文档
          d.Excel的单元格不能合并
          e.只有运行时才会导入数据,运行后在Runtime DataTable中可以查看

      2、GetCurrentRow方法
        Get:获取
        Current:当前
        Row:行
        desktop.CaptureBatimap "D:结果3.png",True
        1
        2
        3
        (1)作用:获取当前读取DataTable表中数据的行号
        (2)语法:变量=DataTable.GetSheet("表单名").GetCurrentRow
        (3)返回值:当前行号,迭代行的行号


      3、SetCurrentRow方法
        Test15007_Flight4a_SetCurrentRow

    For i=5 to 10 
    	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 Cstr(i)
    	Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
    '	设置当前行,运行第一次把数据输出到第1行,以此类推
    	DataTable.GetSheet("Action1").SetCurrentRow i
    	Window("Flight Reservation").WinEdit("Name:").Output CheckPoint("Name:")
    Next

        (1)作用:设定指定表单的当前操作行为指定行
        (2)语法:DataTable.GetSheet("表单名").SetCurrentRow 行号
        (3)参数:Integer,只能是数字
        (4)返回值:无

        练习4:Flight4a
          要求:录制Flight4a登录+购票+退出业务流程
            a.使用For循环实现购票3次
            b.为订票日期、起飞城市、到达城市实现参数化,参数来自city.xls文档
            c.使用输出值输出购票后的订单号
            d.为每次购票后的界面进行截图,要求不能覆盖
        Test1508_Flight4a_DataTable高级使用

    '导入city.xls Excel表中data表单的数据到Action1中
    DataTable.ImportSheet "C:city.xls","data","Action1"
    
    SystemUtil.Run "C:Program FilesHPQuickTest Professionalsamplesflightappflight4a.exe","","C:Program FilesHPQuickTest Professionalsamplesflightapp","open"
    Dialog("Login").WinEdit("Agent Name:").Set "jack"
    Dialog("Login").WinEdit("Password:").SetSecure "5a68540da623868b5a48ca453f037e8a1d2ef4e6"
    Dialog("Login").WinButton("OK").Click
    wait 6
    '循环购票3次
    For i=1 to 3
    	Window("Flight Reservation").ActiveX("MaskEdBox").Type DataTable("订票日期","Action1")
    	Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("起飞城市","Action1")
    	Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("到达城市","Action1")
    	Window("Flight Reservation").WinButton("FLIGHT").Click
    	Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
    	Window("Flight Reservation").WinEdit("Name:").Set "jack"
    	Window("Flight Reservation").WinButton("Insert Order").Click
    	wait 8
    	'设置DataTable的当前行,让每次输出的订单号
    '	保存到不同的行里
    	DataTable.GetSheet("Action1").SetCurrentRow i
    	Window("Flight Reservation").WinEdit("Order No:").Output CheckPoint("Order No:")
    	'把购票成功的界面进行截图
    	Dim row
    	row=DataTable.GetSheet("Action1").GetCurrentRow
    	desktop.CaptureBitmap "D:购票成功"&row&".png",True
    	Window("Flight Reservation").WinButton("Button").Click
    Next
    
    Window("Flight Reservation").Close
  • 相关阅读:
    随机生成密码
    vue 仿新闻项目笔记
    vuex 随笔
    SourceTree
    vue npm,Git随笔
    谷歌浏览器如何去掉自动填充的背景色
    hold 命令
    ind2vec和vec2ind函数
    稀疏矩阵(sparse matrix)
    第五篇 学习OpenCV之视频处理
  • 原文地址:https://www.cnblogs.com/KalosOwen/p/8810904.html
Copyright © 2011-2022 走看看