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---------
发表评论
-
服务器的w3wp.exe进程占用cpu和内存过多的问题
2012-01-20 01:34 573服务器的w3wp.exe进程占用cpu和内存过多的问题 20 ... -
2010年6月PHP面试题
2012-01-20 01:34 7242010年6月PHP面试题 2010 ... -
笑到肚子疼
2012-01-19 09:24 550笑到肚子疼 2011年11月02日 1 -
剪色坊北京直营店(呼市)--死人的一次烫发经历----剪色坊北京直营店(呼市)
2012-01-19 09:24 636剪色坊北京直营店(呼市)--死人的一次烫发经历----剪色坊北 ... -
最真的爱(转)
2012-01-19 09:24 486最真的爱(转) 2011年11月25日 -
如何做好日用品的直销?
2012-01-19 09:24 528如何做好日用品的直销? 2011年11月22日 濡 -
[原创]操作系统编写详解<二>
2012-01-17 01:59 716[原创]操作系统编写详解 2010年08月09日 前一篇 ... -
delphi经典技艺
2012-01-17 01:59 565delphi经典技艺 2012年01月10日 http: ... -
请列出你在从事DBA生涯中,最难以忘怀的一次误操作(1)
2012-01-17 01:59 614请列出你在从事DBA生涯中,最难以忘怀的一次误操作(1) 2 ... -
config配置中文解释
2012-01-17 01:59 825config配置中文解释 2011年04月02日 con ... -
探索C++的秘密之一详解extern "C"
2012-01-15 21:15 502探索C++的秘密之一详解extern "C" ... -
库文件和系统调用的区别
2012-01-15 21:15 521库文件和系统调用的区 ... -
10] 建立C帝国(GDAL编译安装以及一般的C库编译步骤)
2012-01-15 21:15 55710] 建立C帝国(GDAL编译安 ... -
HK-2000数据采集仪WEB服务器BOA的移植方法
2012-01-15 21:15 628HK-2000数据采集仪WEB服务器BOA的移植方法 200 ... -
如何为linux嵌入式开发建立交叉编译环境(2.4内核)
2012-01-15 21:15 539如何为linux嵌入式开发建立交叉编译环境(2.4内核) 2 ...
相关推荐
给初级学习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的三种录制模式