51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2905|回复: 8
打印 上一主题 下一主题

[原创] QTP自动插入附带程序flight任意数量不同记录(Insert Order带脚本说明)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-28 22:51:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文sir当时结束我们QTP课程的时候给我们留了个据说是CPC里面考的QTP题目。    题目的内容是这样的,实现自动插入flight小程序的数据库中的所有记录(任意数量)。
    这时候我们需要考虑很多问题,登陆不是主要事件,忽略,当你进入order订单界面的时候,我们主要考虑动态变化的元素,主要有3个元素:flyfrom;flyto;以及确定了from和to之后的flights列表.
    根据分析我们可以发现,flyfrom永远是10取1,index从0-9,而flyto则是去掉被选定的from之后剩余的9取1,index从0-8;这两个动态元素比较容易控制.
    难点是flights弹出列表的记录数,这个记录数根据选定的from,to进行对应变化,也就是说有10的10次方种列表,我们无法写出简单的脚本对其进行自动读取.
    改变一下思路,我们事先不知道flights列表的index,那我们就添加额外步骤去确认每一次的index,只要我们控制好循环,就可以完成其遍历所有存在记录的目的.
以下是自动添加1000条相互不同记录的脚本
登陆部分(忽略)
Dialog("Login").WinEdit("Agent Name:").Set "abanban"
Dialog("Login").WinEdit("Agent Name:").Type  micTab
Dialog("Login").WinEdit("Password:").SetSecure "47a173562d6104f53d107ca1be4ccb82c48020f1"
Dialog("Login").WinEdit("Password:").Type  micReturn
循环插入记录,重点部分,三层循环
'定义插入记录数,插入计数器
'InsertCount用来控制指定数量插入不同记录
InsertCount=1000
InsertNum=0
'取往来地点的最大值,固定,Maxfrom是flyfrom,Maxto是flyto
Maxfrom = Window("Flight Reservation").WinComboBox("Fly From:").GetItemsCount
Maxto=Maxfrom-1
'最外层循环,Fly from
For i=0 to Maxfrom-1
'第二层循环,Fly to
For j=0 to Maxto-1
'这一段用作取当前往来的所有可选航班,可变,在每一次往来变化中动态获得flightsnum,
'用来作为do while 循环的退出条件
  Window("Flight Reservation").WinButton("Button").Click
  Window("Flight Reservation").ActiveX("MaskEdBox").Type "1111111111"
  Window("Flight Reservation").WinComboBox("Fly From:").Select i
  Window("Flight Reservation").WinComboBox("Fly To:").Select j
  Window("Flight Reservation").WinButton("FLIGHT").Click
'取flightsnum,每确认一次from,to取一次
  flightsnum=Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetItemsCount
'因为该步骤只是取不断变化的flights数量,所有cancel掉
  Window("Flight Reservation").Dialog("Flights Table").WinButton("Cancel").Click
     k=0
'取flightsnum完成,初始化第三层循环计数器K
'第三层循环,按照from i, to j, 航班 k遍历,k不断自增到flightsnum-1
  Do While 1  '死循环,无限
   Window("Flight Reservation").WinButton("Button").Click
   Window("Flight Reservation").ActiveX("MaskEdBox").Type "1111111111"
   
   Window("Flight Reservation").WinComboBox("Fly From:").Select i
   Window("Flight Reservation").WinComboBox("Fly To:").Select j
   Window("Flight Reservation").WinButton("FLIGHT").Click
   Window("Flight Reservation").Dialog("Flights Table").WinList("From").Activate k
   Window("Flight Reservation").WinEdit("Name:").Set "aban"
            Window("Flight Reservation").WinEdit("Tickets:").Set RandomNumber(1, 10)
   Window("Flight Reservation").WinButton("Insert Order").Click
   
   Window("Flight Reservation").ActiveX("Threed Panel Control").WaitProperty "text", "Insert Done...", 10000
'计数器自增
   k=k+1
   InsertNum=InsertNum+1

'插入记录数到达指定数,退出
   If InsertNum=InsertCount Then
    ExitTest
   End If
'判断当前动态航班表flights是否遍历结束,结束则跳出第三层循环
   If flightsnum=k Then
    Exit do
   End If
   
     Loop
'第二层循环,下一个flyto
Next
'第一层循环,下一个flyfrom
Next

[ 本帖最后由 abanban 于 2008-3-29 16:57 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-3-28 23:51:57 | 只看该作者
flight 是什么呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-3-29 08:49:43 | 只看该作者
就是QTP自带的那个机票预定小程序,有叫Flight Reservation,用来演示自动化测试案例以及让你学习Qtp基础用的.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-3-29 14:37:44 | 只看该作者
哇。。老张厉害~。你的帖子一定要顶起来的
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-3-29 15:34:41 | 只看该作者
是LZ描述题目有问题还是我理解的有问题?
LZ描述的题目不是要自动插入“数据库”中的所有记录么。。。理解起来就是要先访问数据库Flight32.mdb中已存在的记录,根据这些记录来插入同样的记录。。。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-3-29 16:34:38 | 只看该作者

回复 1# 的帖子

顶了,张的贴子,一定要看。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-3-29 17:02:33 | 只看该作者
reply to hsjzfling
知道会有歧义,因为其实这个问题实现方式很多.(是可以直接从记录数据库取记录,不过那样又涉及到插入到order表中许多其它可变域的分析考虑.)
这只是完全使用QTP的分析,录制,参数化,修改脚本,回放来实现的一种方式,回顾一下我们课程所学.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-3-31 10:48:12 | 只看该作者

回复 1# 的帖子

这个我做了一下。又把所学的东西复习了。录制脚本和手动书写脚本,有什么区别呢?对象在对象库中都有,但回放时就会有错误。
例如: Window("Flight Reservation").Dialog("Flights Table").WinButton("Cancel").Click,这一句我没有录上去。是手动添加上去的。运行错误!最后只好重新录制一下脚本。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-4-1 06:28:03 | 只看该作者
直接拷贝别人的脚本在自己机器上运行出错还是很普遍的,我这方面经验不是很丰富,不过,根据QTP原理,不外乎对象识别问题,你可以找到出错的脚本,然后用那个对象侦测,甚么spy的工具查看一下
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-14 15:00 , Processed in 0.071931 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表