[转载]使用QTP测试Windows对象
Desktop对象的使用:
通过Desktop对象,可以访问Windows的桌面顶层对象。Desktop对象包括CaptureBitmap、ChildObjects、RunAnalog方法。
(1) 使用CaptureBitmap方法来截屏
使用CaptureBitmap方法,可以把屏幕对象的截屏保存为图像文件。例如,下面的代码把屏幕截图保存到指定的文件,并且当存在相同文件时,覆盖原来文件。
(2) 使用ChildObjects方法获取某个对象中包含的对象列表
使用ChildObjects方法可以获取到某个测试对象中包含的所有对象,例如,下面的脚本通过Desktop对象的ChildObjects方法获取当前桌面上所有名为“无标题-记事本”的窗口对象。
(3) 使用RunAnalog方法运行低级录制过程
QTP支持录制鼠标和键盘操作的低级过程,这种录制模式叫“Analog Recording”。Desktop对象的RunAnalog方法可以运行录制下来的Analog脚本,例如,下面的脚本运行名为“Track 1”的Analog脚本。
SystemUtil对象的使用:
可以利用SystemUtil对象,在测试脚本的运行过程中,控制应用程序和进程,SystemUtil对象包括BlockInput、CloseDescendentProcesses、CloseProcessByHwnd、CloseProcessById、CloseProcessByName、ColseProcessByWndTitle、Run、UnBlockInput方法。
(1) 使用Run方法运行文件或程序
Run方法的使用格式如下:
Run file, [params], [dir], [op], [mode]
下面解释各参数的作用:
(1)“file”参数是必须输入的,是需要被运行的程序,或者是需要被打开的文件。
(2)“params”是可选输入参数,指启动应用程序所需的参数。
(3)“dir”是可选参数,指应用程序或文件的默认工作目录;
(4)“op”是可选参数,指文件打开的模式,包括“open”、“edit”、“explore”、“find”、“print”5种模式。
(5)“mode”参数是可选参数,用于指定程序窗口打开时的状态。
(2) 在脚本运行过程中屏蔽鼠标和键盘
在脚本运行过程中,屏蔽鼠标和键盘的输入可以使用SystemUtil对象的BlockInput和UnBlockInput方法。BlockInput用于屏蔽输入,UnBlockInput用于解除屏蔽。可以使用BlockInput方法防治测试脚本运行过程中被意外的鼠标和键盘操作干扰。
(3) 关闭进程
SystemUtil对象中包含多个可用于关闭进程的方法,包括CloseDescendentProcess、CloseProcessByHwnd、CloseProcessById、CloseProcessByName、CloseProcessByWndTitle。
(1) CloseDescendentProcess用于关闭所有由QTP打开的进程。
(2)CloseProcessByHwnd用于关闭包含指定句柄的窗口的进程。
(3)CloseProcessById用于关闭指定进程ID(PID)的进程。
(4)CloseProcessByName用于关闭指定名称的进程。
(5)CloseProcessByWndTitle用于关闭拥有指定标题的窗口的进程。
ClipBoard对象的使用:
ClipBoard对象代表Windows中的剪贴板对象,在QTP中,可以通过ClipBoard对象来访问剪贴板对象,设置剪贴板的数据。
(1) ClipBoard对象介绍
可以在测试脚本运行过程中,使用ClipBoard对象来复制、剪切和粘贴文本对象,ClipBoard对象拥有与VB语言中的ClipBoard对象一样的方法,包括:
q Clear:用于清空ClipBoard中的数据。
q GetData:用于获取ClipBoard中的数据。
q GetFormat:用于获取ClipBoard中的数据格式。
q GetText:用于获取ClipBoard中的文本数据。
q SetData:用于向ClipBoard设置数据。
q SetText:用于向ClipBoard设置文本数据。
(2) ClipBoard对象的使用方法
在测试过程中,可以利用ClipBoard对象作为缓存测试数据的容器使用,例如,下面的测试脚本首先清空ClipBoard中的所有数据,然后,设置ClipBoard中的文本为“TEST”,最后,从ClipBoard中获取缓存的文本。
标准Windows控件的基本属性和方法:
在QTP中,对于各种标准Windows控件,都提供了一些公共的、通用的基本属性和基本方法,熟练掌握这些基本的属性和方法,有助于更加有效地编写测试脚本。
(1) 使用Exist属性来判断空间是否存在
可以通过访问控件的Exist属性来判断控件是否存在于当前打开的应用程序中。例如,下面的测试脚本用于判断Login窗口是否存在。
(2) 使用CheckProperty检查控件属性
使用CheckProperty方法可以实现与标准检查点相类似的功能,例如,下面的测试脚本使用CheckProperty检查控件的属性是否与指定的值相一致,如果一致,则在测试结果中标识为Pass,否则标识为Fail。
可看到,其实现的功能与CheckPoint实现的功能基本一致。但是,使用方式会比插入CheckPoint更为灵活些。
(3) 使用GetROProperty获取控件属性
GetROProperty用于返回测试对象的当前属性,例如,下面的测试脚本用于获取Login窗口的标题属性。
各类标准Windows控件的测试:
Windows标准控件包括各种基于Windows API和MFC开发的应用程序中的各种控件,在QTP中,对于这些基本控件都有相应的测试对象来控制,例如,Button对应WinButton、CheckBox对应WinCheckBox等。
1) Dialog对象的测试:Dialog对象是指Windows的对话框控件。对Dialog对象的常用测试是Activate方法,用于定位对话框,使其处于激活状态。Activate方法模拟用户点击对话框的标题栏,定位到对话框,通常,在操作对话框中的控件之间,都需要先使用这个方法,确保当前对话框可用。
2) Static对象的测试:Static对象是指Windows静态文本、图像控件,可以用Check方法插入对图像的检查点,在录制过程中,选择菜单“Insert|Checkpoint|Bitmap Checkpoint”,然后,选择指定的图像的区域,如图12.4所示。
3) WinButton对象的测试:WinButton对象的常用测试操作是Click方法,用于模拟用户单击按钮的事件,例如,下面的代码模拟用户单击“OK”按钮。
4) WinCalendar对象的测试:WinCalendar对象是指日期和时间选择控件,例如,Windows搜索助理界面的指定日期控件就是WinCalendar对象,如图12.5所示。WinCalendar对象常用的测试操作时设置日期,需要使用SetDate方法,如以下代码所示。
SetDate方法的参数是“Date”,可以使用两种方式传入:
(1)日期字符串型:格式为d-MMM-yyyy,其中d表示日,MMM表示英文月份缩写,yyyy是年份。
(2)使用VBScript的日期函数,例如Date,Now,IsDate,CDate等。下面的脚本把
日期控件的日期设置为当天。
(3)除了设置日期外,还可以使用WinCalendar对象的SetTime方法来设置事件。
5) WinCheckBox对象的测试:WinCheckBox对象的常用测试操作是Set方法,用于模拟用户把某个选择项选上。例如,下面的脚本用于把Customer Name选择框勾选上。Set方法的参数可以输入“ON”,“OFF”,或者是“DIMMED”3种状态的值。
6) WinComboBox对象的测试:WinComboBox对象的常用测试操作时Select方法,用于模拟用户从下拉框中选择某项内容,例如,下面的脚本从“Fly From”下拉框中选择起飞地点,从“Fly To”下拉框中选择终点。另外,WinComboBox对象还提供一些方法来方便地获取到下拉框的内容,例如,下面的脚本获取下拉框中的所有项总数。而下面的脚本将获取Index为1的下拉框想对应的内容。
7) Window对象的测试:Window对象是指窗体控件,Window对象的常用测试操作是Activate、Maximize、Restore方法,例如,下面的脚本首先定位到记事本的窗口,然后,最大化记事本的窗口,最后,回复记事本窗口大小。另外一个常用的测试操作时通过GetROProperty方法获取窗口的标题,判断标题是否为指定的名称,例如,下面的脚本用于获取记事本窗口的标题。
8) WinEdit对象的测试:WinEdit对象是常见的输入框,其中常用的测试操作是Set方法,可用于模拟用户往输入框中输入字符,例如,下面的脚本在Name输入框中输入文本“CNJ”。另外,如果需要输入加密的文字,则可使用SetSecure方法,例如,下面的脚本在“Password”输入框中输入加密后的密码字符串。
9) WinEditor对象的测试:WinEditor对象与WinEdit对象的使用方法比较类似,同样可以通过Set方法和SetSecure方法来模拟用户输入未加密或加密的内容。也可以使用Type方法来模拟用户往输入框中输入文本,例如,下面的脚本往记事本中输入一段文字,然后,按下Enter键。
10) WinList对象的测试:WinList对象是指列表控件,例如,在Flight程序中,选择航班的界面中航班列表就是一个WinList控件,如图12.6所示。其常用的测试操作是Select方法,用于模拟用户选择列表中的一项内容,例如,下面的脚本选择列表中的指定名称的内容。另外,也可以通过指定Index来选择内容,例如,下面的脚本指定选择Index为2的某项内容。
11) WinListView对象的测试:WinListView对象是指列表视图控件,例如,Windows资源管理器右边窗口就是一个WinListView控件。其常用的测试操作时Select方法,用于模拟用户选择列表视图中的一项内容,例如,下面的脚本通过名称指定选择SysListView32中的某项内容。也可以通过指定Index来选择,例如,下面的脚本通过指定Index为2,选择SysListView32中的第3项的内容。另外,WinListView对象还提供了一个ExtendSelect方法,用于模拟用户按下CTRL键进行多选,例如,下面的脚本同时选择两项内容。
12) WinMenu对象的测试:WinMenu对象是指菜单控件,其常用测试操作是Select方法,用于模拟用户选择某个菜单项,例如,下面的脚本通过指定菜单名称来选择记事本的文件新建菜单。也可以通过指定Index来选择菜单,例如,下面的脚本选择记事本的文件打开菜单。可以使用BuildMenuPath方法来构建菜单路径,例如,下面的脚本先用BuildMenuPath方法来构建菜单选择路径“文件|新建”,然后使用Select方法执行菜单选择动作。BuildMenuPath方法也可以使用Index来指定菜单项,例如,下面的脚本中构建的菜单选择路径是“文件|打开”。
13) WinRadioButton对象的测试:WinRadioButton对象是指单选按钮控件,例如,Flight程序的主界面中的几个机舱等级选择项就是WinRadioButton对象,其常用的测试操作时Set方法,例如,下面的脚本模拟用户单击“Fisrt”单选按钮,选择一等舱的机票。
14) WinScrollBar对象的测试:WinScrollBar对象是指滚动条对象,可以使用其中的Set、NextLine、NextPage、PreLine、PrevPage这几个方法来模拟用户拖动滚动条的动作,例如,下面的脚本模拟用户单击Excel应用程序中的滚动条,让其向下滚动1行。另外,也可以模拟用户拖动滚动条,让其向下滚动1页,例如,下面的代码。还可以使用Set方法来把滚动条设置在某个位置,如下面的脚本所示。可以使用GetROProperty方法先获取ScrollBar的maxscrollpos属性,取得可滚动的最大范围,再根据这个值来决定设置滚动条的位置,这样可避免使用Set方法设置的位置超出范围,例如,下面的脚本把滚动条设置在中间位置。
15) WinSpin对象的测试:WinSpin对象是数值选择控件,例如,Windows的日期和时间属性窗口中的年份选择控件就是一个WinSpin对象,如图12.7所示。其常用的测试操作时Next、Prev、Set方法。例如,下面的脚本先判断日期控件中的日期是否为2008年,如果是,则使用WinSpin的Next方法将日期调到2009年。如果想把日期调前一年,则使用WinSpin的Set方法,如以下代码所示。
16) WinStatusBar对象的测试:WinStatusBar对象是指状态栏控件,其常用的测试操作时通过GetContent获取状态栏的所有信息,例如,下面的脚本获取记事本的状态栏信息。但是GetContent取得时状态栏中的所有信息,而状态栏可能会分成若干部分,例如Windows资源管理器中的状态栏,如图12.8所示。如何分别取得每一部分的信息呢?方法是使用WinStatusBar的GetItem方法,例如,下面的脚本首先使用GetItemsCount方法获取到状态栏部分的个数,然后使用GetItem方法循环取得每一部分的状态栏信息。
17) WinTab对象的测试:WinTab对象是指页签控件,例如,Windows的日期和时间属性窗口中就有一个包含3个页签的WinTab对象,其常用的测试操作时Select方法,例如,下面的脚本模拟用户选择日期和时间属性窗口中的3个页签。另外,Select方法的输入参数也可以是Index,Index从0开始,下面的脚本与上面的脚本的效果是一样的。WinTab对象还提供了一个叫“GetSelection”的方法,用于确定当前所选的页签是哪个,例如,下面的脚本首先使用指定Index的方式来选择第二个页签,然后通过GetSelection方法获取当前所选的页签名称。
18) WinToolbar对象的测试:WinToolbar对象是指工具栏控件,其常用的测试操作时Press方法,用于模拟用户单击工具栏上的某个按钮,例如,下面的脚本用于模拟用户单击Windows资源管理器的工具栏上的“向上”、“后退”和“搜索”按钮。Press的输入参数也可以是Index,Index从1开始,例如,下面的脚本实现了与上面脚本一致的功能。
19) WinTreeView对象的测试:WinTreeView对象是指属性选择控件,例如,Windows资源管理器中左边的窗口就包含一个WinTreeView控件,如图12.10所示。其常用的的测试操作包括Select、Expand、ExpandAll、Collapse等方法。例如,下面的脚本用于在资源管理器中选择某个磁盘。也可以使用ExpandAll方法来展开全部节点,例如,下面的脚本用于展开C盘的所有文件夹目录节点。而收起处于展开状态的节点则可以使用Collapse方法,例如,下面的脚本用于收起处于展开状态的C盘节点。
20) WinObject对象的测试:WinObject对象用于测试那些不能被QTP识别并归类成特定控件类型的Windows控件,其拥有与其他各类控件对应的测试对象相同的基本属性和方法,例如Exist属性、Click方法、Type方法、GetROProperty方法、CheckProperty等。
[转载]使用QTP测试Windows对象的更多相关文章
- 使用QTP测试Web对象
加载Web插件先启动QTP,再启动浏览器,否则Web元素识别不了最新版本QTP11支持的浏览器:IE:6.7.8Firefox:3.0.x.3.5.QTP支持直接访问DOM(Document Obje ...
- windows对象的属性和方法
window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用标志符window来引用它. 一. windows对象的属性 1. locati ...
- Windows对象、句柄与MFC对象
windowsmfc编程c 目录(?)[-] Windows对象句柄与MFC对象 windows对象 句柄 mfc对象 杂谈 Windows对象.句柄与MFC对象 (2009-04-28 22:11: ...
- 报表软件JS开发引用HTML DOM的windows对象
HTML DOM是W3C标准(是HTML文档对象模型的英文缩写,Document Object Model for HTML). HTML DOM定义了用于HTML的一些列标准的对象,以及访问和处理H ...
- js windows对象
一.DOM操作 windows对象操作 document对象操作 二.属性.事件 1.window的属性: window.shuxing(属性) window.fangfa()(方法) 方法后 ...
- JavaScript基础--DOM对象(十三):(windows对象:history\location\navigator\screen\event)
DOM编程1.为什么要学习DOM(1) 通过dom编程,我们可以写出各种网页游戏(2)dom编程也是ajax的重要基础2.DOM编程介绍DOM = Document Object Model(文档对象 ...
- HTML DOM部分---事件 windows对象;
<!--DOM操作windows对象操作 对浏览器进行操作document对象操作 对浏览器内页面文件进行操作 window.shuxing;属性调用格式window.fangfa();方法调用 ...
- 测试RegExp对象的属性
//测试RegExp对象的属性function testRegExpProperty(){ var regexp = /abc/; //regexp.ignoreCase = true; //无效 c ...
- windows对象总结
这篇文章是对windows对象的总结,在winows编程中,windows对象,句柄是一个基本概念,理解这些概念有助于后面的windows编程学习.文章的形式还是以解答问题的方式来组织. 注:在文中, ...
随机推荐
- python 列表list相关知识
List的元素可以是Python的任意数据类型(Boolean,Number,String,List,Dict,Set……) List同样可以使用索引和切片,切片得到的结果也是列表. print(li ...
- python flask 如何修改默认端口号
场景:按照github文档上启动一个flask的app,默认是用5000端口,如果5000端口被占用,启动失败. 样例代码: from flask import Flask app = Flask(_ ...
- vue 中生成二维码之爬坑之路
最近在做vue中项目,有个需求是在你提交信息后把后台返给你的链接生成二维码. 一共使用了两种生成二维码的方法 1.vue-qr 这个是在一进入页面直接生成二维码,具体介绍见文档:https://www ...
- ASP.NET Core2.2 IExceptionFilter
用vs2017建立一个ASP.NET Core Web应用程序并选择MVC框架,自动生成了 Startup的类,并配置了错误处理方式: if (env.IsDevelopment()) { app.U ...
- jenkins git ftp 发布.net 项目
一次搞这个,在其他文章的基础上 添加下自己的 笔记,方便自己查看, -------需要准备的东西--------------- 下载jenkins https://jenkins.io/downloa ...
- selenium中iframe的切换
#第一层是默认层, 第二层是新建标签的层,第三层是百度的那层from selenium import webdriverimport timedriver=webdriver.Chrome()driv ...
- win10安装java
java安装还比较顺利,贴两篇亲测可行的教程 1.开发环境安装:https://www.cnblogs.com/shirley-0021/p/8510051.html 2.开发工具安装(Eclipse ...
- 芯片烧录器编程AT24C02
网上买了两款芯片烧录器,因为项目用的到.芯片以后的类型可能是IIC 接口的.就选则了一个IIC接口的AT24C02EEPROM.进行尝试.手头上没有这款芯片. 就想起自己单片机上有这款芯片.然后就开始 ...
- java后台常见问题
Java后台面试 常见问题 Nginx负载均衡 轮询.轮询是默认的,每一个请求按顺序逐一分配到不同的后端服务器,如果后端服务器down掉了,则能自动剔除 ip_hash.个请求按访问IP的hash结果 ...
- Django的forms表单组件批量设置字段样式
from django import forms from . import models class UserInfoModelForms(forms.ModelForm): class Meta: ...