练习:录制两位数加法器加法计算后退出的步骤,对两个加数做随机数参数化,随机数范围是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. .NET中的简单的并行

    https://www.cnblogs.com/hdwgxz/p/6129419.html https://www.cnblogs.com/hueychan/p/10575907.html

  2. 软件测试第2周个人作业:WordCount编码测试

    一.Github地址 https://github.com/zhouyubei/WordCount 二.PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...

  3. C学习笔记-gdb

    gdb即GNU debugger,用来调试程序 gdb使用前提 要使用gdb,则需要在编译源代码时候使用-g参数 gcc -g –o test test.c 启动gdb gdb 程序名 [corefi ...

  4. flask钩子函数

    @app.context_processor def context_processor(): return {"current_user":"zhiliao" ...

  5. 关于Dev-c++运行时与Windows不兼容问题

    问题描述. 解决方案 1.鼠标右键点击图标,进入属性. 2.点击上方的兼容性. 3.在兼容模式中勾选以兼容模式运行这个程序并选择windows7. 4.再点击以管理员身份运行此程序. 5.点击应用. ...

  6. Luogu P4426 [HNOI/AHOI2018]毒瘤

    题目 神仙题. 首先我们可以把题意转化为图的独立集计数.显然这个东西是个NP-Hard的. 然后我们可以注意到\(m\le n+10\),也就是说最多有\(11\)条非树边. 我们现在先考虑一下,树上 ...

  7. 简单使用template-web.js

    手册地址: http://aui.github.io/art-template/docs/syntax.html https://github.com/aui/art-template 原文地址: h ...

  8. php 简单的 单例模式

    php单例模式简单说明 使用注意事项:     1.使用时不能用反射模式创建单例,否则会实例化一个新的对象     2.使用懒单例模式时注意线程安全问题     3.饿单例模式和懒单例模式构造方法都是 ...

  9. vue使用axios进行ajax请求

    以前都用resource进行ajax请求,现在官方推荐使用axios,所以现在更换插件.这篇文章主要描写如何在项目中引入axios以及简单地使用axios进行ajax请求. 第一步,需要通过npm安装 ...

  10. java——HashSet中add()方法不能加重复值得原因理解(我们一起来看底层代码吧)

    Set<String> names = new HashSet<>(); names.add("张三"); names.add(new String(&qu ...