QTP录制Delphi客户端
2010年08月19日
虽然Delphi现在已经是强弩之末了,但是很多一些大型应用,如银行,电信,保险业,由于其性能和安全性的考虑,并未对软件做界面的升级,所以目前绝大部分关键型应用,仍然有很多都是基于Delphi设计的客户端。由于我之前正是参与一个前台基于Delphi开发的银行客户端平台,在采用QTP对某些核心功能进行自动化时,遇到很多问题。
现在QTP已经是到10版本了,我目前还在用的是9.2,比较成熟的版本。但是在用它录制Delphi程序时,发现很多控件并不能识别。因为QTP它默认可以识别Windows标准控件,但是银行很多的一些功能或者按钮控件都是封装windows标准控件,导致QTP并不能识别,加之QTP识别Windows控件是采用Windows_id,而Delphi并没有,所以基本上录制出来的脚本,并不能正确执行。解决这个问题,QTP本身有好几种解决方案:
1、安装QTP Delphi控件,但是QTP9.2官网并没有给出这个add-in,有一个比较牵强的办法,就是安装8.2版本的Delphi控件,9.2版本是可以正确识别的。安装后便可以识别Delphi窗口按钮等控件。有些人可能会遇到录制界面死掉的问题,这个目前还解决不了,可以采用方法2
2、QTP为了保证能够录制大部分C/S程序,采用了一种对象映射机制来保证它可以识别非标准控件。它采取的办法,就是用待测软件的对象映射到它可以识别的标准控件。
基于软件的操作方法如下:
1.) 选择"Tools">>"Object Identification";
2.) 在"Environment"框中选择"Standard Windows",则"User-Defined…"按钮将变为可用;
3.) 点击"User-Defined…"按钮,将显示"Object Mapping"对话框;
4. ) 单击指向手,然后单击要将其类作为用户定义的类添加的对象。用户定义的对象的名称将显示在"Class Name"框中。(其实这个"Class Name"框也可以自己填,如果自己清楚该填什么的话)
提示:按住Ctrl键,可以更改窗口焦点或执行右键单击或鼠标悬停(以显示上下文菜单)等操作。注意:按Ctrl键时,您不能从Windows任务栏中选择应用程序,因此,必须确保要访问的窗口没有最小化。
5.) 在"Map to"框中,选择要将用户定义的对象类映射到的标准对象类,然后单击"Add"。类名和映射将添加到对象映射列表中。
6.) 如果要将其他对象映射到标准类,请对每个对象重复步骤4-5。
7.) 单击"OK"。"Object Mapping"对话框关闭,您的对象作为用户定义的测试对象添加到标准Windows测试对象类列表中
此外,你也可以采用编辑VBS可执行脚本方式,来将你的空间做映射:
这里只举一个例子,比如添加一个自定义的toolbar映射到Windows标准toolbar控件,代码如下
Dim App 'As Application //定义启动应用程序对象
Set App = GetObject("","QuickTest.Application") //启动QTP应用
'Configuration of user-defined objects
'Object identification configuration for user-defined object "ttoolbar"
App.Options.ObjectIdentification("WinToolbar").Cre ateUserDefinedObject("ttoolbar")
App.Options.ObjectIdentification("ttoolbar").Ordin alIdentifier = "location"
App.Options.ObjectIdentification("ttoolbar").Manda toryProperties.RemoveAll()
App.Options.ObjectIdentification("ttoolbar").Manda toryProperties.Add("nativeclass")
App.Options.ObjectIdentification("ttoolbar").Manda toryProperties.Add("text")
App.Options.ObjectIdentification("ttoolbar").Assis tiveProperties.RemoveAll()
App.Options.ObjectIdentification("ttoolbar").Assis tiveProperties.Add("window id")
App.Options.ObjectIdentification("ttoolbar").Enabl eSmartIdentification = False
App.Options.ObjectIdentification("ttoolbar").BaseF ilterProperties.RemoveAll()
App.Options.ObjectIdentification("ttoolbar").Optio nalFilterProperties.RemoveAll()
基本格式就如上面,如果你要新增某些其他识别该空间的变量,就是用App.Options.ObjectIdentification("ttoolbar").Manda toryProperties.Add("nativeclass")
这样,将你的程序编写好后,便可以在QTP中运行,结果就是,你的新增对象会被导入到【Standard Windows】中。当然,你也可以在Tools->Object Identification,导出你通过软件新增的映射对象,格式为vbs,这样你就可以再不同机器上是用你的对象组了,这非常有利i项目团队去共享。
3、另外,时常关注QTP新版本的信息,其实QTP10 版本,已经支持Delphi了,ReadMe更新如下:
New Supported Operating Systems and Environments QuickTest Professional 10.00 now offers support for the operating systems, browsers, and development environments listed below. For a complete list of all supported operating systems, browsers, and development environments, see the HP QuickTest Professional 10.00 Product Availability Matrix. lMicrosoft Windows 2008 Server 32-bit Edition lMicrosoft Windows 2008 Server 64-bit Edition lMicrosoft Windows Vista, Service Pack 1, 32-bit Edition lMicrosoft Windows Vista, Service Pack 1, 64-bit Edition lMicrosoft Windows XP Professional 32-bit Edition-Service Pack 3(9.5下也可以用,不过我发现先开Foxmail,再开QTP会报错,但先开QTP,再开Foxmail没有问题) lCitrix Presentation Server 4.5 lMicrosoft Internet Explorer 8, Beta 2 lMozilla Firefox 3.0.x(终于支持了,9.5可是不支持的) lDelphi: IDE, versions 6, 7, and 2007 (for controls based on the Win32 VCL library) lSAP: CRM 2007 (For controls that support test mode enhancements. Requires SAP notes: 1147166, 1066565, and 1002944. Later SAP notes related to test mode enhancements are not supported.) lJava: IBM 32-bit JDK 1.5.x, SWT toolkit version 3.4 lJava Extensibility:Eclipse IDE 3.4 l.NET: .NET Framework 3.5-Service Pack 1 --------EOF---------
发表评论
-
批处理不显示dos窗口
2012-01-20 10:05 693批处理不显示dos窗口 2010年07月26日 两段运行 ... -
Office Powershell Cookbook (Office powershell 常见操作)
2012-01-20 10:05 568Office Powershell Cookbook (Off ... -
【转】WMA Lossless Decoder
2012-01-20 10:05 799【转】WMA Lossless Decoder 2010年0 ... -
PHP笔试题2
2012-01-20 10:05 668PHP笔试题2 2011年04月24 ... -
VBS利用SendKeys输入中文字符的方法
2012-01-19 15:07 835VBS利用SendKeys输入中文 ... -
谈VBS在Hacking中的作用-挑选网速快的肉鸡
2012-01-19 15:07 646谈VBS在Hacking中的作用-挑选网速快的肉鸡 2011 ... -
VBS整人代码 很多 测试把我给整安逸了
2012-01-19 15:06 980VBS整人代码 很多 测试把我给整安逸了 2010年08月2 ... -
利用VBS让QQ永远在线
2012-01-19 15:06 567利用VBS让QQ永远在线 201 ... -
VBS Runas 自动明文的输入密码
2012-01-19 15:06 825VBS Runas 自动明文的输入密码 2010年06月23 ... -
X Window 设定介绍(2)
2012-01-17 04:53 519X Window 设定介绍(2) 2010年06月05日 ... -
linux 下的mplayer安装
2012-01-17 04:53 628linux 下的mplayer安装 2010年07月28日 ... -
KKCapture视频录像软件下载
2012-01-17 04:53 899KKCapture视频录像软件下 ... -
cegui基础2
2012-01-17 04:53 604cegui基础2 2010年11月25日 cegui 2 ... -
Motorola(摩托罗拉)比较不错的机子,直接秒杀诺基亚N8,不看看你会后悔的哦。。。
2012-01-17 04:53 653Motorola(摩托罗拉)比较不错的机子,直接秒杀诺基亚N8 ... -
正则表达式的写法(转)
2012-01-16 03:44 693正则表达式的写法(转) 2010年12月22日 正则表达 ... -
AS3常用正则表达式
2012-01-16 03:44 807AS3常用正则表达式 2009年07月04日 正则表达式 ... -
理解 Flex itemRenderer - 内联渲染器
2012-01-16 03:44 678理解 Flex itemRenderer - 内联渲染器 2 ... -
flash/flex开源框架aswing教程1
2012-01-16 03:44 661flash/flex开源框架aswing教 ... -
flex各种用法
2012-01-16 03:44 514flex各种用法 2010年02月22日 //获得屏幕的 ...
相关推荐
给初级学习qtp的测试人员提供的在录制时不理解的描述信息
通过自定义对象来操作一些QTP录制脚本无法驱动的对象。
解决不识别IE8时无法录制QTP脚本问题
QTP 8.2插件,开始使用QTP来录制delphi应用程式,但是在回放的过程中总是出错,原来是有些对象无法识别导致,在网上找到说是要装这个插件,刚下下来自已还没有试,先放上来与大家共享下
经过测试,此插件完全能够与QTP完美结合,安装简单
QTP脚本录制回放
由于QTP无法捕捉已经编译好的Delphi程序中的控件,所以需要将此插件包中的源码引入到工程中重新编译。将该压缩包解压后的MicDelphiAgent等源码放到Delphi工程路径下, 在Delphi主函数中: uses MicDelphiAgent, 之后...
对于QTp录制对象不能识别链接的解决方案,文档中的解说非常详细,很适合初学者和QTP能力的进阶提升
自己写代码来完成录制下拉菜单选项,但是并不是很繁琐的
HP QuickTestProfessional 支持Delphi 程序指南
QTP安装 录制回复脚本等功能介绍 QTP安装 录制回复脚本等功能介绍
开发人员简单录制qtp,里面有很细节的步骤和截图。希望帮助到大家。没有代码,严格按照步骤来,包括虚拟机的配置
对整套QTP自动化都有详细的步骤描述以及测试层次,是一份不可多得的好资料
在安装QTP后,或者禁用IE浏览器里的一些ActiveX控件后,正常录制QTP事,不能产生相应的录制脚本,脚本内容为空。
本人调试无错的QTP订机票参数化测试代码
详细的介绍了QTP的录制过程,对QTP新手有较高的参考价值
newtours源码,可以学到很多QTP知识
Qtp在录制过程中添加检查点步骤: A问题描述: 在录制过程中添加检查点可以避免在编辑脚本时无法添加需要检查点的问题 B处理流程: B1从录制界面切换到qtp B2添加检查点 B3设定检查点 B4继续录制 C术语说明
第7篇-QTP的三种录制模式第7篇-QTP的三种录制模式