肖欢伟 发表于 2010-12-21 11:09:49

QTO参数化请教?(QTP自带的飞机订票系统参数化问题求救)

我是个QTP新手,就用QTP自带的飞机订票系统来学习。但是参数化不会,失败了。求老手赐教。

file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.pngDialog("Login").Activate
Dialog("Login").WinEdit("Agent Name:").Set "mercury"
Dialog("Login").WinEdit("Password:").SetSecure "4d10154623f52e115d81b29cb8a50e19a164ceec"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").ActiveX("MaskEdBox").Type "122510"
Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("出发地点", dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("到达地点", dtGlobalSheet)
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "20259   DEN   07:12 AM   LON   02:23 PM   AA   $112.20"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "kaka"
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Close
file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/QTP1.jpg

肖欢伟 发表于 2010-12-21 11:11:26

本帖最后由 肖欢伟 于 2010-12-21 11:15 编辑

哪位好心人能弄一个 飞机订票系统然后再参数化一下(就是“起始地点”和“到达地点”的参数化或者还有“订票人”)
我只会在关键字视图里面点击 VALUE值右键参数化,然后把相应的参数写在 表里面,接下来就不知道改哪里了。。。。。。。

wz403692767 发表于 2010-12-21 11:23:04

把你的DataTable截出来看看

肖欢伟 发表于 2010-12-21 11:30:17

出发地点      到达地点
1   Denver      London
2Paris            Frankfurt
3Portland      Seattle

-------------------------公司电脑装不了FALSH 所以传不了截图,等下回去用自己的电脑传。样子就是这样的

wz403692767 发表于 2010-12-21 12:29:43

本帖最后由 wz403692767 于 2010-12-21 12:32 编辑

'================================
' 函数:LoginFlight
' 功能:登录订票系统
' 参数:FightPath,订票系统目录
'================================
Public Function LoginFlight(FlightPath)
Do
    If Dialog("Login").Exist(2) = False Then
      SystemUtil.Run FlightPath
    Else
      Dialog("Login").WinEdit("Agent Name:").Set "admin"
      Dialog("Login").WinEdit("Password:").Set "mercury"
      Dialog("Login").WinButton("OK").Click
      Exit do
    End If
Loop While True
End Function
'===============================
' 函数:OrderFlight
' 功能:订票
' 参数:无
'===============================
Public Function OrderFlight
Do
    If Window("Flight Reservation").Exist(2) = False Then
      Wait 2
    Else
      Exit do
    End If
Loop While True
If Window("Flight Reservation").Exist(5) Then
Window("Flight Reservation").ActiveX("MaskEdBox").Type DataTable("Date",dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("From",dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("To",dtGlobalSheet)
Window("Flight Reservation").WinButton("FLIGHT").Click
Wait 2
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select 0
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Wait 1
Window("Flight Reservation").WinEdit("Name:").Set DataTable("Name",dtGlobalSheet)
Window("Flight Reservation").WinEdit("Tickets:").Set "1"
Window("Flight Reservation").WinButton("Insert Order").Click
End If
End Function
'====================================
' 函数:ExitFlight
' 功能:退出订票系统
' 参数:无
'====================================
Public Function ExitFlight
Window("Flight Reservation").WinButton("Insert Order").WaitProperty "enabled",false,100000
Window("Flight Reservation").Close
End Function
'====================================
' Main 函数
'====================================
FlightPath = "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe"
LoginFlight(FlightPath)
OrderFlight
ExitFlight
我临时写了一个完整的,自己参考下,写的不好请见谅,有些没有参数化
DataTable

肖欢伟 发表于 2010-12-21 13:51:09

我临时写了一个完整的,自己参考下,写的不好请见谅,有些没有参数化
DataTable
wz403692767 发表于 2010-12-21 12:29 http://bbs.51testing.com/images/common/back.gif

恩。谢谢你。非常感谢。 我在去研究研究。:)

肖欢伟 发表于 2010-12-21 13:56:24

回复 5# wz403692767

你这个都是用函数写的哦。比较高深一点,可以不用函数写,更“傻瓜式”一点么?就是尽量简单易懂一点,尤其像我这种小白。。。。:)

1987wing 发表于 2010-12-21 14:22:02

在qtp help菜单中有一个QuickTest Professional Tutorial,打开它里面有教你如何参数化

wz403692767 发表于 2010-12-21 14:24:43

回复 7# 肖欢伟


    不用函数写的话就把Function里面的东西拿出来,最好函数化,看的比较清楚,容易修改


'Login
Do
If Dialog("Login").Exist(2) = False Then
    SystemUtil.Run "C:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe"
Else
    Dialog("Login").WinEdit("Agent Name:").Set "admin"
    Dialog("Login").WinEdit("Password:").Set "mercury"
    Dialog("Login").WinButton("OK").Click
    Exit do
End If
Loop While True

'Order
Do
If Window("Flight Reservation").Exist(2) = False Then
    Wait 2
Else
    Exit do
End If
Loop While True
If Window("Flight Reservation").Exist(5) Then
Window("Flight Reservation").ActiveX("MaskEdBox").Type DataTable("Date",dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("From",dtGlobalSheet)
Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("To",dtGlobalSheet)
Window("Flight Reservation").WinButton("FLIGHT").Click
Wait 2
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select 0
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Wait 1
Window("Flight Reservation").WinEdit("Name:").Set DataTable("Name",dtGlobalSheet)
Window("Flight Reservation").WinEdit("Tickets:").Set "1"
Window("Flight Reservation").WinButton("Insert Order").Click
End If

'Exit
Window("Flight Reservation").WinButton("Insert Order").WaitProperty "enabled",false,100000
Window("Flight Reservation").Close

肖欢伟 发表于 2010-12-21 15:14:35

回复肖欢伟


    不用函数写的话就把Function里面的东西拿出来,最好函数化,看的比较清楚,容易修改 ...
wz403692767 发表于 2010-12-21 14:24 http://bbs.51testing.com/images/common/back.gif


    恩,真的非常感谢。可以加你QQ吗?以后有什么问题可以请教你。

wz403692767 发表于 2010-12-21 15:24:28

回复 10# 肖欢伟


    QQ:403692767   
    我也就接触了一个月,有机会一起探讨

肖欢伟 发表于 2010-12-29 10:14:37

回复肖欢伟


    不用函数写的话就把Function里面的东西拿出来,最好函数化,看的比较清楚,容易修改 ...
wz403692767 发表于 2010-12-21 14:24 http://bbs.51testing.com/images/common/back.gif

哥们,我把你给我的代码复制进去,允许。报错。报错内容写的是
Line (3): "If Dialog("Login").Exist(2) = False Then".
不知道是什么原因。你给看看?

wz403692767 发表于 2010-12-29 12:05:26

回复 12# 肖欢伟


    你需要把脚本里的对象全部添加到对象库中

17800455 发表于 2010-12-31 15:20:06

do

loop while true    你为什么要写个死循环你怕qtp不读dataTable表中的数据吗。

在qtp中设置一下就行了。让读所有的。应该在setting里的运行,这是设置全局的。

如果你用别的action的话要在action中设置一下。

肖欢伟 发表于 2011-2-10 15:29:09

回复 14# 17800455
楼上的哥们, 要不你也帮帮忙,不要在专家视图里写。就用 用录制。在 关键字视图里面操作一个。
把订票 的 出发地到达地 和 订票人等 参数化一下。 帮忙把 源码复制一下。 万分感激。
页: [1]
查看完整版本: QTO参数化请教?(QTP自带的飞机订票系统参数化问题求救)