练习:录制两位数加法器加法计算后退出的步骤,对两个加数做随机数参数化,随机数范围是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. Angular ViewChild & ViewChildren

    基础 ViewChild ViewChild 装饰器用于获取模板视图中的元素或直接调用其组件中的方法.它支持 Type 类型或 string 类型的选择器,同时支持设置 read 查询条件,以获取不同 ...

  2. IDEA连接 Oracle数据库

    package com.zxx.util;import org.apache.commons.dbutils.DbUtils;import java.sql.Connection;import jav ...

  3. 查看Oracle索引是否被使用或者有效

    第一步: explain plan for select * from T_USER where OPEN_ID='12345'; 第二步: select * from table(dbms_xpla ...

  4. 「java.util.concurrent并发包」之 ThreadPoolExecutor

    一 异步用new Thread? 大写的"low"!! new Thread(new Runnable() { @Override public void run() { // T ...

  5. php网络请求

    get请求 /** * get请求 * @param $url,请求地址 * @return bool|string */ function getRequest($url){ $headerArra ...

  6. 【原创】大叔经验分享(71)docker容器中使用jvm工具

    java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只 ...

  7. whistle学习(二)之启动、停止、重启、更新whistle等命令

    新版本的whistle支持三种等价命令whistle,w2,wproxy 启动whistle w2 start 启动时指定端口 w2 start -p (// 不设置端口默认使用8899) 默认端口为 ...

  8. vuex用法

    // 配置vuex的步骤 // 1. 运行 cnpm i vuex -S // 2. 导入包 import Vuex from 'vuex' // 3. 注册vuex到vue中 Vue.use(Vue ...

  9. 7 java 笔记

    1 方法是类或者对象行为特征的抽象,方法是类或对象最重要的组成部分 2 java里面方法的参数传递方式只有一种:值传递 值传递:就是将实际参数值的复制品传入方法内,而参数本身不会受到任何影响.(这是j ...

  10. java三大框架——Struts + Hibernate + Spring

    Struts主要负责表示层的显示 Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作) Hibernate主要是数据持久化到数据库 再用jsp的servlet做网页开发的时候有个 w ...