资源描述
使用QTP测试标准Windows 对象
标准Windows对象是由QTP直接支持的测试对象,在这里,标准Windows对象格式基于Win32 API和MFC创建的应用程序。我们将学习到如何在 QTP 中利用各种测试对象的方法和属性来对标准 Windows 应用程序进行测试。
1.1 标准 Windows 控件的测试
在 QTP 中,标准的 Windows 控件,如 Button、CheckBox 等,都有相应的测试对象来控制。
1.1.1 Dialog 对象测试
Dialog 对象是指 Windows 的对话框控件。对 Dialog 对象的常用测试是 Activate 方法,用于定位对话框,使其处于激活状态。例如:
Dialog("Login").Activate
Activate 方法模拟用户点击对话框的标题栏,定位到对话框,通常在操作对话框的控件之前,都要先使用这个方法,确保对话框可用。
1.1.2 Static 对象的测试
Static 对象是指 Windows 静态文本、图像控件,可以用 Check 方法对插入图像检查点,在录制过程中,选择彩单 Insert > Checkpoint > Bitmap Checkpoint,然后,选择指定图像的区域,确定即可。
产生的代码如下:
Dialog("Login").Static("Static").Check CheckPoint("Static")
1.1.3 WinButton 对象的测试 Click 方法
WinButton 对象的常用测试操作时 Click 方法,用于模拟用户的单击按钮事件,例如,下面的代码模拟用户单击 OK 按钮。
Dialog("Login").WinButton("OK").Click
1.1.4 WinCalendar 对象的测试 SetDate 方法
WinCalendar 对象是指日期和时间选择空间,例如,Windows 搜索助理界面的制定日期控件就是 WinCalendar 对象。
WinCalendar 对象常用的测试操作时设置日期,需要使用 SetDate 方法,例如:
Window("我的电脑").Activate
Window("我的电脑").WinToolbar("ToolbarWindow32_2").Press "搜索"
Window("我的电脑").ActiveX("Search Assistant Control").WinCalendar("SysDateTimePick32").SetDate "12-Aug-2009"
Window("我的电脑").ActiveX("Search Assistant Control").WinCalendar("SysDateTimePick32_2").SetDate"18-Aug-2009"
Window("我的电脑").WinToolbar("ToolbarWindow32_4").Press "关闭"
Window("我的电脑").Close
SetDate 方法的参数是 Date,可以用两种方式传入:
日期字符串型:格式为 d-MMM-yyyy,其中 d 表示日,MMM 表示英文月份缩写,yyyy表示年份。
使用 VBScript 日期函数:例如 Date,Now,IsDate,CDate 等。下面的脚本把日期控件的日期设置为当天:
Window("我的电脑").ActiveX("Search Assistant Control").WinCalendar("SysDateTimePick32").SetDate Date
除了设置日期外,还可以使用 WinCalendar 对象的 SetTime 方法来设置时间,例如,下面的脚本把日期控件的时间设置为 11 点 11 分 11 秒:
Dialog("Common Controls").WindCalendar("SysDateTimePick32").SetTime "11:11:11"
1.1.5 WinCheckBox 对象的测试 Set 方法
WinCheckBox 对象的常用测试操作是 Set 方法,用于模拟用户把某个选项选上。下面的脚本用于把 Customer Name 选项勾选上:
'定位到 Open Order 窗口
Window("Flight Reservation").Dialog("Open Order").Activate
'把 Customer Name 选择框勾选上
WIndow("Flight Reservation").Dialog("Open Order").WinCheckBox("Customer Name").Set "ON"
Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set "WFS"
Set 方法的参数可以输入"ON","OFF",或者是"DIMMED"3 种状态的值。
1.1.6 WinComboBox 对象的测试 Select 方法 GetItemsCount方法 GetItem方法
WinComboBox 对象的常用测试操作时 Select 方法,用于模拟用户从下拉框中选择某项内容,例如,下面的脚本从"Fly From"下拉框中选择起飞地点,从 Fly To 下来框中选择终点:
'从下拉框总选择起飞地点
Window("Flight Reservation").WinComboBox("Fly From:").Select "Denver"
'从下拉框总选择终点
WIndow("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
Window("Flight Reservation").WinButton("FLIGHT").Click
另外,WinComboBox 对象还提供一些方法来方便地获取到下拉框的内容,例如,下面的脚本获取下拉框中的所有项的总数:
MsgBox Window("Flight Reservation").WinComboBox("Fly To:").GetItemsCount
而下面的脚本将获取 Index 为 1 的下拉框项对应的内容:
'从下拉框 Index 获取对应的内容
ItemStr = WIndow("Flight Reservation").WinComboBox("Fly To:").GetItem(1)
If ItemStr = "Denver" Then
MsgBox "OK"
Else MsgBox ItemStr
End If
1.1.7 Window 对象的测试
Window 对象是指窗体控件,Window 对象的常用测试操作时 Activate、Maximize、Restore方法,例如,下面的脚本首先定位到记事本窗口,然后,最大化记事本的窗口,最后,恢复
记事本窗口的大小:
'定位到记事本的窗口
Window("记事本").Activate
'最大化记事本窗口
Window("记事本").Maximize
'恢复记事本窗口的大小
Window("记事本").Restore
另一个常用的测试操作时通过 GetROProperty 方法获取窗口的标题,判断标题是否为制定的名称,例如,下面的脚本用于获取记事本窗口的标题
'获取记事本窗口的标题
MsgBox WIndow("记事本").GetROProperty("text")
1.1.8 WinEdit 对象的测试 Set 方法 SetSecure 方法
WinEdit 对象是常见的输入框,其中常用的测试操作时 Set 方法,可用于模拟用户往输入框中输入文字,例如,下面的脚本在 Name 输入框中输入文本 WFS:
'在 Name 输入框中输入 WFS
Window("Flight Reservation").WinEdit("Name:").Set "WFS"
如果需要输入加密的文字,则可使用 SetSecure 方法,例如,下面的脚本在 Password 输入框中输入加密后的密码字符串:
Dialog("Login").Activate 1
Dialog("Login").WinEdit("Agent Name:").Set "MERCURY"
'在 password 中输入加密后的字符串
Dialog("Login").WinEdit("Password:").SetSecure "47d0bb547b92729a4951b5e2fd088faed8c80334"
Dialog("Login").WinButton("OK").Click
SetSecure 方法主要用于在录制测试脚本的过程中,对输入密码进行加密,然后,在回放脚本时进行解密,从而避免吧密码明文地显示在测试脚本中。
1.1.9 WinEditor 对象的测试 Set 方法和 SetSecure Type 方法
WinEditor 对象与 WinEdit 对象的使用方法比较类似,同样额可以通过 Set 方法和 SetSecure 方法来模拟用户输入未加密或加密的内容。也可以使用 Type 方法来模拟用户往输入框中输入文本,例如,下面的脚本网记事本中输入一段文字,然后按下 Enter 键。
Window("记事本").WinEditor("Edit").Type "123456789wangfasheng"
Window("记事本").WinEditor("Edit").Type micReturn
1.1.10 WinList 对象的测试 Select 方法
WinList 对象是指列表控件,例如,在 Flight 程序中,选择航班的界面中航班列表就是一个 WinList 控件。
WinList 最常用的测试操作是 Select 方法,用于模拟用户选择列表中的一项内容,例如,下面的脚本选择列表中的指定名称的内容。
Window("Flight Reservation").Dialog("Flights Table").Activate
'选择 WinList 列表中的某项内容,通过名称指定
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "14243 DEN 12:57 PM FRA 01:41 PM SR $110.00"
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
也可以通过指定 Index 来选择内容,例如,下面的脚本指定选择 Index 为 2 的某项内容。
Window("Flight Reservation").Dialog("Flights Table").Activate
'选择 WinList 列表中的某项内容,通过 Index 指定
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select 2
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
这里指定 Index 为 2,并不是指列表中的第二项内容,而是第 3 项,因为 Index 是从 0 开始计算的。
1.1.11 WinListView 对象的测试 Select 方法 ExtendSelect 方法
WinlistView 对象是指列表视图控件,例如,Windows 资源管理器右边窗口就是一个WinListView 控件。其常用的测试操作是 Select 方法,用于模拟用户选择列表视图中的一项内容,例如,下面的脚本通过名称指定选择 SysListView32 中的某项内容。
'通过名称指定选择 SysListView32 中的某项内容
Window("我的电脑_2").WinListView("SysListView32").Select "本地磁盘 (C:)"
Window("我的电脑_2").WinListView("SysListView32").Select "本地磁盘 (C:)"中的第 3 项。
'通过 Index 指定选择 SysListView32 中的某项内容
Window("我的电脑_2").WinListView("SysListView32").Select 2
WinListView 还提供了一个 ExtendSelect 方法,用于模拟用户按下 CTRL 键进行多选,例如,下面的脚本同时选择了两项内容。
模拟用户按下 CTRL 键进行多选
WIndow("我的电脑_2").WinListView("SysListView32").Select 0
Window("我的电脑_2").WinListView("SysListView32").ExtendSelect 1
1.1.12 WinMenu 对象的测试 Select 方法 BuildMenuPath 方法
WinMenu 对象是指菜单控件,其常用测试操作时 Select 方法,用于模拟用户选择某个菜单项。例如,下面的脚本通过制定菜单名称来选择记事本的"文件>新建"菜单:
Window("记事本").Activate
'通过指定菜单名称来选择菜单
Window("记事本").WinMenu("Menu").Select "文件(F);新建(N) Ctrl+N"
也可以通过指定 Index 来选择菜单,例如下面脚本打开记事本的"文件 > 打开"菜单
Window("记事本").Activate
'通过指定菜单 Index 来选择菜单
Window("记事本").WinMenu("Menu").Select "<Item 1>;<Item 2>"
这里 Index 从 1 开始。
可以使用 BuildMenuPath 方法来构建菜单路径。例如下面的脚本先用 BuildMenuPath 方法来构建菜单选择路径 "文件 > 新建",然后使用 Select 方法执行菜单选择动作。
'构建菜单选择路径文件 > 新建
MenuPath = WIndow("记事本").WinMenu("Menu").BuildMenuPath("文件(F)","新建(N) Ctrl+N")
Window("记事本").WinMenu("Menu").Select MenuPath
1.1.13 WinRadioButton 对象的测试 Set 方法
WinRadioButton 对象是指单选按钮控件,例如,Flight 程序的主界面中的介个机舱登记选择项就是 WinRadioButton 对象,其常用的测试操作时 Set 方法,例如,下面的脚本模拟用户单击 First 单选按钮,选择一等机舱的机票。
Window("Flight Reservation").Activate
'选择 First 选项
WIndow("Flight Reservation").WinRadioButton("First").Set
1.1.14 WinScrollBar 对象的测试 Set、NextLine、NextPage、PreLine、PrePage
WinScrollBar 对象是指滚动条对象,可以使用其中的 Set、NextLine、NextPage、PreLine、PrePage 等方法来模拟用户拖动滚动条的动作,例如,下面的脚本模拟用户单击 Excel 应用程序中的滚动条,让其下滚 1 行。
Window("Book1").Activate
'单击 Excel 应用程序的滚动条,让其下滚 1 行
Window("Book1").WinScrollBar("ScrollBar").NextLine 1
如果想让滚动条向上滚动 1 页,则使用 PrePage 方法,NextPage 相当于按下 PageDown按钮,PrePage 相当于按下 PageUp 按钮。
还可以使用 Set 方法将滚动条设置在某个位置,如下。
Window("Book1").Activate
Window("Book1").WinScrollBar("ScrollBar").Set 5
可以使用 GetROProperty 方法先获取 ScrollBar 的 maxscrollpos 属性,取得可滚动的最大范围,再根据这个值来决定设置滚动条的位置,这样可避免使用 Set 方法设置的位置超出范围,例如,如下脚本将滚动条设置在中间位置。
Window("Book1").Activate
'获取 ScrollBar 的 maxscrollpos 属性
max = Window("Book1").WinScrollBar("ScrollBar").GetROProperty("maxscrollpos")
'设置滚动条位置为中间
MsgBox max
pos = max/2
Window("Book1").WinScrollBar("ScrollBar").Set pos
1.1.15 WinSpin 对象的测试
WinSpin 对象是数值选择空间,例如,Windows 的日期和时间属性窗口中的年份选择空间就是一个 WinSpin 对象
该控件常用的测试操作时 Next、Pre、Set 方法,例如,下面的脚本先判断日期控件中的日期是否为 2009 年,如果是,则使用 WinSpin 的 Next 方法将日期调到 2010 年。
Dialog("日期和时间 属性").Activate
'如果是 2009 年,则往后选择
If Dialog("日期和时间 属性").WinEdit("Edit_2").GetROProperty("text")=2009 Then
Dialog("日期和时间 属性").WinSpin("msctls_updown32").Next
End If
如果想把日期调前一年,则使用 WinSpin 的 Pre 方法。如果想把日期设置到某个特定的年份,则可使用 WinSpin 的 Set 方法,如以下代码所示:
'直接把日期设置为 1997 年
Dialog("日期和时间 属性").WinSpin("msctls_updown32").Set 1997
1.1.16 WinStatusBar 对象的测试 GetContent
WinStatusBar 对象是指状态栏控件,其常用的测试操作是 GetContent 获取状态栏的所有信息,例如,下面的脚本获取画图工具的状态栏信息。
'获取画图的状态栏信息
Status = Window("画图").WinStatusBar("msctls_statusbar32").GetContent
MsgBox Status
GetContent 取得的是状态栏中的所有信息,而状态栏可能会分成若干个部分,例如Windows 资源管理器的状态栏。 Windows 资源管理器的状态栏。如何分别取得每一部分的信息呢?方法是使用 WinStatusBar的 GetItem 方法,例如,下面的脚本首先似乎用 GetItemsCount 方法获取到状态栏部分的个数,然后使用 GetItem 方法循环取得每一个部分的状态栏信息。
'使用 GetItemsCount 方法获取到状态栏部分的个数
StatusItemCount = Window("本地磁盘 (C:)").WinStatusBar("msctls_statusbar32").GetItemsCount
'循环取得每一个部分的状态栏信息
For i=0 to StatusItemCount-1
StatusItem = WIndow("本地磁盘 (C:)").WinStatusBar("msctls_statusbar32").GetItem(i)
MsgBox StatusItem
Next
1.1.17 WinTab 对象的测试 Select 方法 GetSelection方法
WinTab 对象是指页签控件,例如,Windows 的日期和时间属性窗口中就有一个包含 3 个页签的 WinTab 对象,其常用的测试操作时 Select 方法,例如,下面的脚本模拟用户选择日期和时间窗口中的 3 个页签。
Dialog("日期和时间 属性").WinTab("SysTabControl32").Select "时区"
Dialog("日期和时间 属性").WinTab("SysTabControl32").Select "Internet 时间"
Dialog("日期和时间 属性").WinTab("SysTabControl32").Select "时间和日期"
另外,Select 方法的输入参数也可以使 Index,Index 从 0 开始,下面的脚本与上面的脚本效果是一样的。
Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 1
Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 2
Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 0
WinTab 对象还提供了一个叫 GetSelection 的方法,用于确定当前所选的页签是哪一个,例如,下面的脚本首先使用指定 Index 的方式来选择第二个页签,然后通过 GetSelection 方法获取当前所选的页签名称。
'选择第二个页签
Dialog("日期和时间 属性").WinTab("SysTabControl32").Select 1
'通过 GetSelection 方法获取当前所选的页签名称
SelectedTab = Dialog("日期和时间 属性").WinTab("SysTabControl32").GetSelection
Reporter.ReportEvent micDone,"目前选择的 Tab 页是:",SelectedTab
运行脚本,在测试结果中展开结果树,观察运行结果。
1.1.18 WinToolbar 对象的测试 Press 方法
WinToolbar 对象是指工具栏控件,其常用的测试操作是 Press 方法,用于模拟用户单击工具栏上的某个按钮,例如,下面的脚本用于模拟用户单击 Windows 资源管理器的工具栏上的"向上"、"后退"、"搜索"按钮。
Window("本地磁盘 (C:)").WinToolbar("ToolbarWindow32_2").Press "向上"
Window("我的电脑").WinToolbar("ToolbarWindow32").Press "后退"
Window("本地磁盘 (C:)").WinToolbar("ToolbarWindow32_2").Press "搜索"
Press 方法的输入参数也可以是 Index,Index 从 1 开始,例如,下面的脚本实现了与上面脚本一致的功能。
Window("本地磁盘 (C:)").WinToolbar("ToolbarWindow32_2").Press 3
Window("我的电脑").WinToolbar("ToolbarWindow32").Press 1
Window("本地磁盘 (C:)").WinToolbar("ToolbarWindow32_2").Press 4
1.1.19 WinTreeView 对象的测试 Select、Expand、ExpandAll、Collapse 等方法
WinTreeView 对象是指树形选择控件,例如,Windows 资源管理器中左边的窗口就包含一个 WinTreeView 控件。其常用的测试操作包括 Select、Expand、ExpandAll、Collapse 等方法。例如,下面的测试脚本用于在资源管理器中选择某个磁盘:
'在资源管理器中选择某个磁盘
Window("我的电脑").WinTreeView("SysTreeView32").Select "桌面;我的电脑"
Window("我的电脑").WinTreeView("SysTreeView32").Select "桌面;我的电脑;本地磁盘 (C:)"
可以看到,选择的几点按层次关系用";"隔开。如果想展开某个节点,可用 WinTreeView 对象的 Expand 方法,例如,下面的脚本用于依次展开"我的电脑"、"本地磁盘(C:)"节点。
'依次展开我的电脑,本地磁盘(C:)节点
Window("我的电脑").WinTreeView("SysTreeView32").Expand "桌面;我的电脑"
Window("我的电脑").WinTreeView("SysTreeView32").Expand "桌面;我的电脑;本地磁盘 (C:)"
也可以用 ExpandAll 展开全部节点,例如,下面的脚本用于展开 C 盘的所有文件夹目录节点。
'展开 C 盘所有文件夹目录节点
Window("我的电脑").WinTreeView("SysTreeView32").ExpandAll "桌面;我的电脑;本地磁盘 (C:)"
而收起处于展开状态的节点则可以使用 Collapse 方法,例如,下面的脚本用于收起处于展开状态的 C 盘节点。
'收起 C 盘节点
Window("我的电脑").WinTreeView("SysTreeView32").Collapse "桌面;我的电脑;本地磁盘 (C:)"
展开阅读全文