51Testing软件测试论坛

标题: QTP录制Flight4a.exe程序时,怎么取到订票起始站下拉框的值? [打印本页]

作者: 1qazse4    时间: 2008-1-16 10:20
标题: QTP录制Flight4a.exe程序时,怎么取到订票起始站下拉框的值?
QTP录制Flight4a.exe程序时,怎么取到订票起始站下拉框的值?

本人在网上找了些资料,但是调试还是不通过。
代码如下:

'激活敞口,如果对话框Login没有打开,则系统调用将其打开运行
If not Dialog("Login").Exist Then
        SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe"
End If
'激活对话框Login
Dialog("Login").Activate
'在文本编辑框Edit内输入内容“Mercury”
Dialog("Login").WinEdit("Edit").Set "mercury"
'在文本编辑框Password内输入内容“Mercury”
Dialog("Login").WinEdit("Password:").Set "mercury"
'单击OK按钮
Dialog("Login").WinButton("OK").Click
'激活窗口Flight Reservation
Window("Flight Reservation").Activate
'在日期输入框Flight No:内输入时间类型的值
Window("Flight Reservation").WinObject("Flight No:").Type "071111"

'声明一个函数GetList
Function GetList(i)
   Randomize
   GetList=RandomNumber(0,i)
End Function

Dim Get_Count1,Ran_Number1
Get_Count1=Window("Flight Reservation").WinComboBox("Departure Time:").GetROProperty("items count")
Ran_Number1=GetList(Get_Count-1)
Window("Flight Reservation").WinComboBox("Departure Time:").Select  "#"&Ran_Number1


Dim Get_Count2,Ran_Number2
Get_Count2=Window("Flight Reservation").WinComboBox("Arrival Time:").GetROProperty("items count")
Ran_Number2=GetList(Get_Count2-1)
Window("Flight Reservation").WinComboBox("Arrival Time:").Select "#"&Ran_Number2

Window("Flight Reservation").WinCheckBox("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").Activate
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Edit").Set "1qazse4"
Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0, 1
Window("Flight Reservation").WinEdit("Tickets:").Set "2"
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Close


运行到这里时,就通不过了:Window("Flight Reservation").WinComboBox("Departure Time:").Select  "#"&Ran_Number1

请大家帮忙下,谢谢

作者: linwenyan    时间: 2008-1-16 14:11
Window("Flight Reservation").WinComboBox("Departure Time:").Select  "#"&Ran_Number1

这句是你自己写的吗,不是QTP录制的吗?
1.如果是QTP自己识别的对象应该是Window("Flight Reservation").WinComboBox("Fly From:"),怎么会是Window("Flight Reservation").WinComboBox("Departure Time:")
2.Select  "#"&Ran_Number1,这里的#是什么意思

你试试这样改Window("Flight Reservation").WinComboBox("Fly From:").Select Ran_Number1

最好是先录制脚本,然后在录制脚本的基础上再优化脚本
作者: walker1020    时间: 2008-1-16 14:16
QTP  报告什么错误? 根据QTP 的提示信息去 修改就可以了呀
作者: walker1020    时间: 2008-1-16 14:34
关于 Select 的用法,请参考QTP提供的例子:

Sub Select_Example()
'The following example uses the Select method to select the item 22
'from the Size combo box.
Window("Notepad").Dialog("Font").WinComboBox("&Size:").Select "22"
'or
Window("Notepad").Dialog("Font").WinComboBox("&Size:").Select 7
End Sub
作者: 1qazse4    时间: 2008-1-16 16:10
多谢linweiyan兄
    但是我的flight4a.exe识别的控件WinCombox的名称是:"Departure Time:",“fly from”的类型是text

谢谢Walker版主:
  我下面重新发段代码,附上错误信息
Cannot identify the object "Arrival Time:" (of class WinComboBox). Verify that this object's properties match an object currently displayed in your application.
Object's physical description:
Native Class = ComboBox
Items Count = 10
Attached Text = Arrival Time:

Object's physical description:
Native Class = ComboBox
Items Count = 10
Attached Text = Arrival Time:
作者: 1qazse4    时间: 2008-1-16 16:12
下面是新的代码,代码是自己先识别Objects,然后在KeyWord View试图里一步一步设计的
     '激活敞口,如果对话框Login没有打开,则系统调用将其打开运行
If not Dialog("Login").Exist Then
        SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe"
End If
'激活对话框Login
Dialog("Login").Activate
'在文本编辑框Edit内输入内容“Mercury”
Dialog("Login").WinEdit("Edit").Set "mercury"
'在文本编辑框Password内输入内容“Mercury”
Dialog("Login").WinEdit("Password:").Set "mercury"
'单击OK按钮
Dialog("Login").WinButton("OK").Click
'激活窗口Flight Reservation
Wait(2)
Window("Flight Reservation").Activate
'在日期输入框Flight No:内输入时间类型的值
Window("Flight Reservation").WinObject("Flight No:").Type "071111"

'声明一个函数GetList
Function GetList(i)
   Randomize
   GetList=RandomNumber(0,i)
End Function

Dim Get_Count1,Ran_Number1,Result1 '声明三个变量
Get_Count1=Window("Flight Reservation").WinComboBox("Departure Time:").GetItemsCount '取得下拉框的记录的总条数
Ran_Number1=GetList(Get_Count1-1)  '调用函数GetList,随机取一个数字
Result1=Window("Flight Reservation").WinComboBox("Departure Time:").GetItem(Ran_Number1) '获取下拉框第Ran_Number1条记录的值
Window("Flight Reservation").WinComboBox("Departure Time:").Select  Result1 '选择刚才获取到的值

Dim Get_Count2,Ran_Number2,Result2 '声明三个变量
Get_Count2=Window("Flight Reservation").WinComboBox("Arrival Time:").GetItemsCount '取得下拉框的记录的总条数
Ran_Number2=GetList(Get_Count2-1) '调用函数GetList,随机取一个数字
Result2=Window("Flight Reservation").WinComboBox("Arrival Time:").GetItem(Ran_Number2) '获取下拉框第Ran_Number2条记录的值
Window("Flight Reservation").WinComboBox("Arrival Time:").Select Result2 '选择刚才获取到的值

Window("Flight Reservation").WinCheckBox("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").Activate
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Edit").Set "1qazse4"
Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0, 1
Window("Flight Reservation").WinEdit("Tickets:").Set "2"
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Close


[ 本帖最后由 1qazse4 于 2008-1-16 16:17 编辑 ]
作者: 1qazse4    时间: 2008-1-16 16:19
运行到这行的时候出错,
  Get_Count2=Window("Flight Reservation").WinComboBox("Arrival Time:").GetItemsCount '取得下拉框的记录的总条数

错误信息已经传到楼上,但是我确实是识别了该控件WinComBox:Arrival Time:
作者: 1qazse4    时间: 2008-1-16 17:25
多谢大家帮忙顶,我已经找到问题所在了
   原来是我不够仔细
因为 Departure Time:的属性Items count的值为10
         我也将Ariival Time:的属性Items count的值也定为10
而其控件的原始值为9。所以运行总是说识别不了

以后我认真一点拉!
作者: 暗涧幽火    时间: 2008-1-17 15:31
真的很好啊!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2