QTP订票系统获取OrderNo以及如何将其插入到Datatable

上一篇 / 下一篇  2011-03-28 21:58:34 / 个人分类:QTP

Dim a
Set a=GetObject("","QuickTest.Application")
a.WindowState="Minimized" ' QTP窗口最小化

Dialog("regexpwndtitle:=Login").Activate
Dialog("regexpwndtitle:=Login").WinEdit("window id:=3001").Set "Mercury"
Dialog("regexpwndtitle:=Login").WinEdit("window id:=2000").SetSecure "Mercury"
Dialog("regexpwndtitle:=Login").WinButton("text:=OK").Click
Window("regexpwndtitle:=Flight Reservation").Activate
Window("Flight Reservation").WinButton("Button_5").Click ' 新建订票记录
Window("Flight Reservation").WinObject("Date of Flight:").Type DataTable("Data_of_Flight", dtGlobalSheet) ' 输入航班日期
Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("FlightFrom", dtGlobalSheet) ' 输入起始地点
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("FlyTo", dtGlobalSheet) ' 输入终点
Window("Flight Reservation").WinButton("FLIGHT").Click ' 查看行班
ItemCount = Window("Flight Reservation").Dialog("Flights Table").WinList("From").GetItemsCount '  取得航班列表的行数
SelectItem = RandomNumber(0, ItemCount) ' 随机选取其中一项
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select   SelectItem ' 选择航班
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click ' 确认选择行班
Window("Flight Reservation").WinEdit("Name:").Set "CNJ" ' 输入订票人名字
Window("Flight Reservation").WinButton("Insert Order").Click ' 插入订票记录
Wait 5 ' 等待记录插入过程的完成
Rno=Window("Flight Reservation").WinEdit("attached text:=Order No:").GetROProperty("text") ' 取得订票记录号
do while Rno=""
wait 1
Rno=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
Loop
Window("Flight Reservation").WinButton("Button_4").Click '  打开订票记录窗口
Window("Flight Reservation").Dialog("Open Order").WinCheckBox("Order No.").Set "ON" ' 选择以订票号为依据查询
b = DataTable.GetCurrentRow
DataTable.SetCurrentRow( b+1) 
Datatable("OrderNo",dtGlobalSheet) = Rno
DataTable.Export ("D:\flights.xls")
Window("Flight Reservation").Dialog("Open Order").WinEdit("window id:=1016").Type  Rno ' 设置订票号
Window("Flight Reservation").Dialog("Open Order").WinButton("OK").Click ' 确认查询
Window("Flight Reservation").WinComboBox("Fly To:").Check CheckPoint("Fly To:") ' 检查订票记录中的航班终点是否正确
Window("regexpwndtitle:=Flight Reservation").Close


注意事项:
1.如果没有下面这几行代码,QTP将无法获取Rno数据。并导致运行失败,我已经试验过!
do while Rno=""
wait 1
Rno=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("text")
Loop
2.以下代码是将runtime的数据插入到Datatable.我们可以使用断点查看到效果,但运行结束后插入的数据Rno并不能保存,在OrderNo下面则是空白!以我的理解,Rno是运行时的数据,可能无法保存,但我们可以将数据导出:
b = DataTable.GetCurrentRow
DataTable.SetCurrentRow( b+1) 
Datatable("OrderNo",dtGlobalSheet) = Rno
DataTable.Export ("D:\flights.xls")' 将数据导出到本机
3.代码在运行时可能会遇到这样的错误提示:“Object not visible”
1)把这些代码加到最前面
Dim objQTPWin
Set bjQTPWin = GetObject("" , "QuickTest.Application")
objQTPWin.WindowState = "Minimized"
因为你回放的时候QTP主界面挡住了你要打开的对象
2)如果上面的方法还不凑效,可能是QTP在操作完某个对象后可能释放了此对象的内容,或改变了此对象的某个属性,所以再次使用时就有了问题。解决方案:
使用描述性编程,如Dialog("regexpwndtitle:=Login").Activate,一开始运行时没有问题,运行几次后就在这一行提示这个错误,于是我就将代码给出描述性的,问题就解决了!

TAG:

 

评分:0

我来说两句

Open Toolbar