练习:录制两位数加法器加法计算后退出的步骤,对两个加数做随机数参数化,随机数范围是0-50,在计算后获得被测系统计算的结果,判断如果结果等于100,msgbox提示“满分”,如果结果在80和99之间,msgbox提示“优秀”,
  如果结果在70和79之间,msgbox提示“良好”,
  如果结果在60和69之间,msgbox提示“及格”,
  如果结果60以下,msgbox提示“不及格”
Test12001_两位数加法器_分支

VbWindow("Form1").VbEdit("Text1").Set cstr(RandomNumber(0,50))
VbWindow("Form1").VbEdit("Text2").Set cstr(RandomNumber(0,50))
VbWindow("Form1").VbButton("计算(J)").Click
'计算后获得被测系统计算的结果
Dim result
result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
result=cint(result)
print result
'判断结果范围
If result=100 Then
msgbox "满分"
Elseif result>=80 and result<=99 Then
msgbox "优秀"
Elseif result>=70 and result<=79 Then
msgbox "良好"
Elseif result>=60 and result<=69 Then
msgbox "及格"
Else
msgbox "不及格"
End If
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

练习:Flight,通过For循环实现登录-打开1、3、5、7、9号订单-退出
Test12002_Flight_For

Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a614c6c4f3179d8983437601de7cb4b02c0e2ad"
Dialog("Login").WinButton("OK").Click
Dim i
For i=1 to 9 step 2
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 i
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
Next
Window("Flight Reservation").Close

练习:两位数加法器,录制加法计算、再重置、退出的步骤,使用For循环来实现最多10次随机数加法,在循环过程中,如果计算结果大于50,就不再继续循环。
Test12003_两位数加法器_For

Dim i,result
For i=1 to 10
VbWindow("Form1").VbEdit("Text1").Set RandomNumber(-99,99)
VbWindow("Form1").VbEdit("Text2").Set RandomNumber(-99,99)
VbWindow("Form1").VbButton("计算(J)").Click
'获得计算结果
result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
print result
'判断结果如果大于50
If cint(result)>50 Then
'就强制退出循环
Exit For
End If
VbWindow("Form1").VbButton("重置(C)").Click
Next
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

一、循环结构
  1、For循环
  2、While循环
    (1)作用:实现次数不固定、条件固定的循环
    (2)语法:
      While 条件表达式
        循环体
      WEnd
    (3)功能:只要每次判断条件表达式时,取值为True,就会执行循环体,取值为False,就退出循环。
    (4)说明&注意:
      a.While和WEnd配对出现
      b.在While前,准备好条件表达式中第一次判断使用的数据。
      c.执行完循环体后,While循环不会给任何变量自动增加数值
      d.最少执行0次循环体

        练习:书写代码实现以下猜数小游戏:
          a.生成一个随机数,存储在一个变量中(随机数范围:1到10)
          b.循环通过Inputbox通知用户输入猜测的数值,并且判断用户猜测的数值跟a步骤的数值的大小关系
          c.如果猜测的数值不等于a步骤的数值,就执行循环
          d.如果猜测的数值大于a步骤的数值,就提示“猜大了,继续猜”
          e.如果猜测的数值小于a步骤的数值,就提示“猜小了,继续猜”
        Test12004_While_猜数

'练习:书写代码实现以下猜数小游戏:
' a.生成一个随机数,存储在一个变量
'中(随机数范围:1到10)
' b.循环通过Inputbox通知用户输入猜
'测的数值,并且判断用户猜测的数值跟a步骤
'的数值的大小关系
' c.如果猜测的数值不等于a步骤的数值
',就执行循环
' d.如果猜测的数值大于a步骤的数值
',就提示“猜大了,继续猜”
' e.如果猜测的数值小于a步骤的数值
',就提示“猜小了,继续猜” Dim n1,n2'n1是生成的随机数,n2就是用户猜测的数字
n1=RandomNumber(1,10)
n2=0
While n1<>n2
n2=cint(Inputbox("请猜1到10之间的数:"))
If n2>n1 Then
msgbox "猜大了,继续猜"
Elseif n2<n1 Then
msgbox "猜小了,继续猜"
End If
Wend
msgbox "恭喜,猜中了,随机数就是"&n1

        练习:两位数加法器,录制加法计算、再重置、退出的步骤,使用While循环来实现无限次随机数加法,在循环过程中,如果计算结果大于50,就不再继续循环。
        注意:条件是小于或等于50,不是大于50
        Test12005_两位数加法器_While

Dim result
result=0
While cint(result)<=50
VbWindow("Form1").VbEdit("Text1").Set RandomNumber(-99,99)
VbWindow("Form1").VbEdit("Text2").Set RandomNumber(-99,99)
VbWindow("Form1").VbButton("计算(J)").Click
'获得计算结果
result=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
print result
VbWindow("Form1").VbButton("重置(C)").Click
Wend
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

        练习:Flight,录制登录-打开1号订单-退出的步骤,通过While循环修改代码实现从1号开始打开订单,每次订单号加1,某次打开的订单总金额(Total)的值等于“$337.40”时不再继续打开后续订单,使用msgbox输出该订单的顾客姓名。
        注意:循环条件是总金额不等于"$337.40"
        提示:定义两个变量,一个存储订单号,一个存储总金额
        Test12006_Flight_While

Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a618a3c421460a3a2594f75a1ad2d74207e422b"
Dialog("Login").WinButton("OK").Click
Dim num,total'订单号,总金额
num=1
total=""
While total<>"$337.40"
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(num)
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
'获得num号订单的总金额
total=Window("Flight Reservation").WinEdit("Total:").GetROProperty("text")
'每次订单号加1
num=num+1
print total
print num
Wend
'输出顾客姓名
msgbox Window("Flight Reservation").WinEdit("Name:").GetROProperty("text")
Window("Flight Reservation").Close

        Test12007_VBS循环_While

'练习:1+2+3+4+5+……,不论执行多少次,
'只要结果小于20就继续做加法,
'如果结果大于或等于20时,就停止
'Dim i,sum
'sum=0
'i=1'循环前,给循环中使用到的变量赋初始值
'While sum<20'执行循环体的条件
' sum=sum+i'循环体的主体
' i=i+1'变量自增出现在循环体中
'Wend
'print sum'1+2+3+4+5+6=21
' '练习:2+4+6+……,不论执行多少次,
'只要结果小于40就继续做加法,
'如果结果大于或等于40时,就停止
'Dim i,sum
'i=2
'sum=0
'While sum<40
' sum=sum+i
' i=i+2
'Wend
'print sum'2+4+6+8+10+12=42 Dim i,sum
i=0
sum=0
While sum<40
i=i+2
sum=sum+i
Wend
print sum'2+4+6+8+10+12=42

        例:
          Dim i,sum
          i=0
          sum=0
          While sum<40
            i=i+2
            sum=sum+i
          Wend
          print sum'2+4+6+8+10+12=42

  3.DoLoop循环---了解
    (1)作用:实现次数不固定、条件固定的循环,语法比While循环灵活,功能更强大。
    (2)语法参照:Test12008_VBS_DoLoop

'For i=1 to 3
' print i
'Next
'
'i=1
'While i<=3
' print i
' i=i+1
'Wend 'Dim i,sum
'i=1
'sum=100
'Do While sum<20
' sum=sum+i
' i=i+1
'Loop
'print sum
'功能:先判断条件,如果成立,就执行循环体
'不成立时,就退出 'Dim i,sum
'i=1
'sum=100
'Do
' sum=sum+i
' i=i+1
'Loop While sum<20
'print sum
'功能:先执行一次循环体,再判断条件,如果成立,就执行循环体
'不成立时,就退出 'Dim i,sum
'i=1
'sum=100
'Do Until sum>=20
' sum=sum+i
' i=i+1
'Loop
'print sum
'功能:先判断条件,如果成立,就退出
'不成立时,就执行循环体 'Dim i,sum
'i=1
'sum=100
'Do
' sum=sum+i
' i=i+1
'Loop Until sum>=20
'print sum
'功能:先执行一次循环体,再判断条件,如果成立,就退出
'不成立时,就执行循环体 'Dim i,sum
'i=1
'sum=100
'Do
' sum=sum+i
' If sum>20 Then
' Exit Do'强制退出DoLoop循环
' End If
' i=i+1
'Loop
'print sum Dim i,sum
i=1
sum=100
Do
If sum>20 Then
Exit Do'强制退出DoLoop循环
End If
sum=sum+i
i=i+1
Loop
print sum

    (3)总结:
      a.Do和Loop之间是循环体
      b.While或Until条件可以写在Do后,也可以写在Loop后
        如果条件写在Do后,会先判断条件,再考虑是否执行循环体
        如果条件写在Loop后,会先执行一次循环体,再判断条件是否成立
      c.While后的条件成立时,会执行循环体,Until后的条件成立时,会直接退出循环。
      d.Exit Do语句可以位于循环体内部,一旦执行到此行,就强制退出DoLoop循环。

       

二、自定义检查点
  1.作用:用于实现QTP内置的检查点无法实现的复杂的检查。

  2.自定义检查点就是自己书写代码实现检查。

  3.实现步骤:
    (1)分析待检查的业务
    (2)将检查成功的条件描述成为一个条件表达式---最重要的步骤!!
    (3)使用If分支结构,判断条件表达式,生成两个分支
    (4)在条件成立的分支中,向测试结果报告中记录检查成功的结果,在条件不成立的分支中,向测试结果报告中记录检查失败的结果。

  4.记录结果的语法:
    reporter.ReportEvent 状态,"步骤名称","详细描述"
    例:
      '记录成功的结果
        'reporter.ReportEvent micPass,"检查计算结果","计算正确"
      '记录失败的结果
        reporter.ReportEvent micFail,"检查计算结果","计算错误,预期值是100,实际值是30"

    练习:两位数加法器,做随机数加法后,检查计算结果是否正确,最后退出
    分析:条件表达式
      预期结果=实际结果
      其中预期结果是对两个加数文本框获得数据后使用加号做加法运算后的结果,实际结果是从被测系统的结果文本框中获得的数据。
    Test12009_两位数加法器_自定义检查点

Dim n1,n2
n1=RandomNumber(-99,99)
n2=RandomNumber(-99,99)
VbWindow("Form1").VbEdit("Text1").Set n1
VbWindow("Form1").VbEdit("Text2").Set n2
VbWindow("Form1").VbButton("计算(J)").Click
'自定义检查点,检查结果是否正确
Dim e,a'预期结果、实际结果
e=n1+n2'两个加数加法运算
a=VbWindow("Form1").VbEdit("Text3").GetROProperty("text")
print e
print a
If cint(e)=cint(a) Then
reporter.ReportEvent micPass,"检查计算结果","计算正确"
Else
reporter.ReportEvent micFail,"检查计算结果","计算错误,预期值是"&e&",实际值是"&a
End If
VbWindow("Form1").VbButton("退出(E)").Click
VbWindow("Form1").Dialog("退出提示").WinButton("确定").Click

    练习:Flight,登录-连续订票2次-退出,检查第二次订票的订单号比第一次订票的订单号多1
    提示:订票后先等待10秒再获得订单号
    Test12010_Flight_订单号多1_自定义检查点

Dialog("Login").WinEdit("Agent Name:").Set "1234"
Dialog("Login").WinEdit("Password:").SetSecure "5a61b055b6ccf4ad8b0cd50f6b7a2ed8c24a3cae"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111119"
Window("Flight Reservation").WinComboBox("Fly From:").Select "London"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Los Angeles"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "19178 LON 12:48 PM LAX 01:33 PM AA $104.40"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "dddd"
Window("Flight Reservation").WinButton("Insert Order").Click
wait 10
Dim n1
n1=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
print n1
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111118"
Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
Window("Flight Reservation").WinComboBox("Fly To:").Select "London"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "13580 FRA 03:12 PM LON 03:57 PM SR $160.40"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "eeee"
Window("Flight Reservation").WinButton("Insert Order").Click
wait 10
Dim n2
n2=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
print n2
Window("Flight Reservation").Close
'检查第二个订单号比第一个订单号多1
If cint(n2)=cint(n1)+1 Then
reporter.ReportEvent micPass,"检查订单号","第二个订单号比第一个订单号多1"
Else
reporter.ReportEvent micFail,"检查订单号","第二个订单号"&n2&"不比第一个订单号"&n1&"多1"
End If

    Test12011_Flight_订单号多1_自定义检查点

Dialog("Login").WinEdit("Agent Name:").Set "1023"
Dialog("Login").WinEdit("Password:").SetSecure "5a61bf03f681b795b3d62fdda1c9cda63d154c92"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinButton("Button").Click
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON"
Dim num'订单号
num=cstr(RandomNumber(1000,2000))
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set num
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click
'自定义检查点
Dim e,a'预期提示、实际提示
e="Order number "&num&" does not exist"
a=Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").Static("提示").GetROProperty("text")
print e
print a
If e=a Then
reporter.ReportEvent micPass,"检查提示","提示内容正确"
Else
reporter.ReportEvent micFail,"检查提示","提示内容错误"
End If
Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").WinButton("确定").Click
Window("Flight Reservation").Dialog("Open Order").WinButton("Cancel").Click
Window("Flight Reservation").Close

    练习:Flight,登录-打开1000到2000随机编号的订单-点击“确定”-点击“取消”-退出,在点击“确定”前,检查提示信息显示正确
    提示:条件表达式
      预期提示=实际提示
      其中预期提示应该通过字符串拼接生成,实际提示从被测系统的Static对象获得text属性值。
      "Order number "&num&" does not exist"
      Order number 1080 does not exist
      Order number 1879 does not exist
    Test12012_Flight_提示_自定义检查点

    Dim e,a'预期提示、实际提示
    e="Order number "&num&" does not exist"
    a=Window("Flight Reservation").Dialog("Open Order").Dialog("Flight Reservations").Static("提示").GetROProperty("text")
    print e
    print a
    If e=a Then
      reporter.ReportEvent micPass,"检查提示","提示内容正确"
    Else
      reporter.ReportEvent micFail,"检查提示","提示内容错误"
    End If

QTP(12)的更多相关文章

  1. QTP(8)

    一.Action 1.调用Action C:\Program Files\HP\QuickTest Professional\CodeSamplesPlus\Flight_Samples (1)调用A ...

  2. Netruon 理解(12):使用 Linux bridge 将 Linux network namespace 连接外网

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  3. 基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式

    在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括 ...

  4. Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作

    (11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...

  5. Android菜鸟的成长笔记(12)——Handler、Loop、MessageQueue

    原文:[置顶] Android菜鸟的成长笔记(12)——Handler.Loop.MessageQueue 当一个程序第一次启动时,Android会启动一条主线程(Main Thread),主线程主要 ...

  6. Windows Phone开发(12):认识一下独具个性的磁贴

    原文:Windows Phone开发(12):认识一下独具个性的磁贴 对"磁贴"的理解是一点也不抽象的,为什么呢?只要你愿意启动WP系统,无论你是在模拟器中还是在真机中,是的,桌面 ...

  7. 网站静态化处理—web前端优化—中(12)

    网站静态化处理—web前端优化—中(12) Web前端很多优化原则都是从如何提升网络通讯效率的角度提出的,但是这些原则使用的时候还是有很多陷阱在里面,如果我们不能深入理解这些优化原则背后所隐藏的技术原 ...

  8. python入门(12)dict

    python入门(12)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例 ...

  9. (1-2)line-height的各类属性值

    (1-2)line-height的各类属性值 首先来个疑问!没有问题印象不深嘛 一.line-height支持哪些属性值呢? 五只手指头就能数过来了咯. 比如normal, <number> ...

随机推荐

  1. LOGIT REGRESSION

    Version info: Code for this page was tested in SPSS 20. Logistic regression, also called a logit mod ...

  2. 20190925 - macOS 的包管理工具

    众所周知,macOS 的包管理工具有 MacPorts 和 Homebrew,后者似乎更受欢迎,但前者但包数量更多. 喜欢手冲咖啡,看到 brew 这个词有好感,但可能部分由于网络的问题,部分因为 b ...

  3. linux 网络相关

    1. 配bond 模式 将eth0 和 eth1 绑定 ,master 为bond2 ,直接上文件 eth0   和 eth1 , 类似,如下 ,关键点  MASTER and  SLAVE TYPE ...

  4. 【并行计算-CUDA开发】warp是调度和执行的基本单位而harf-warp为存储器操作基本单位

    1.在用vs运行cuda的一些例子时,在编译阶段会报出很多警告: warning C4819 ...... 解决这个警告的方法是打开出现warning的文件,Ctrl+A全选,然后在文件菜单:file ...

  5. mysql数据库之函数、流程控制

    函数 注意与存储过程的区别,mysql内置的函数只能在sql语句中使用! 参考博客:http://www.cnblogs.com/linhaifeng/articles/7495918.html#_l ...

  6. 阅读《C Primer Plus》收获

    190927 知识内容: 1.了解到C语言混乱代码大赛.评选谁的程序最有创意但又让人难以理解 2.了解最初的c语言的规则,所有编译器依照规则而设计. 3.编程前先要确定好目标对象,并且在纸上大概写出流 ...

  7. Squares of a Sorted Array

    Given an array of integers A sorted in non-decreasing order, return an array of the squares of each ...

  8. linux常用的bash指令

    文本处理 awk sed grep sort uniq cat cut echo fmt tr nl egrep fgrep wc 进程监视 ps top htop atop lsof 网络 nmap ...

  9. java自定义excel

    文件下载 本文主要介绍spring boot环境下,利用Apache POI操作Excel,实现Excel文件的在线下载. 首先,我们在这里介绍一下关于ApachePOI中关于HSSF,XSSF和SX ...

  10. Visual Studio高分屏下Winform界面变形

    现在高分屏的电脑越来越多,2K屏,4K屏层出不穷,对于.net开发人员来说,尤其是Winform开发者, 分辨率一直是个比较头疼的事情,屏幕分辨率高了,如果仍然设置显示100%,会导致字体非常小,影响 ...