虽然我们不能控制灾难, 但是我们可以左右灾难的后果! 坚持生的勇气! 那就是希望!

QTP自动添加所有存在记录(有点长,请耐心)

上一篇 / 下一篇  2008-03-28 20:46:32 / 精华(2) / 个人分类:QTP

    老写些乱七八糟的感性文字,该静下心来好好写写测试相关的文章了.

    QA大姐头告诉我,接下来我的任务就是配合一个老员工进行一个模块的自动化测试,QTP的,不错,正中下怀,比起LR,我还是更加喜爱QTP.

    文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

 


TAG: QTP

 

评分:0

我来说两句

日历

« 2024-04-20  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 42050
  • 日志数: 55
  • 图片数: 1
  • 建立时间: 2007-11-27
  • 更新时间: 2008-08-23

RSS订阅

Open Toolbar