|
文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 编辑 ] |
|