duanq456 发表于 2010-12-2 11:20:12

QTP 如何识别Delphi 的三方控件

QTP 如何识别Delphi 的三方控件。
我有一个控件识别为ttsgird   还有一个识别为ttsdbgrid
这两个目前都识别不了。
而ttsdbgrid 是个查询界面。。我想让他导出来。。但去查询的时候。是个三方控件。
我的delphi插件是8.2**的。QTP是9.2的。。有没有什么好办法啊?

FLY000 发表于 2010-12-2 14:51:20

DEPHI第三方控件是什么意思

duanq456 发表于 2010-12-3 11:13:32

DEPHI第三方控件是什么意思
FLY000 发表于 2010-12-2 14:51 http://bbs.51testing.com/images/common/back.gif


    三方控件。。就是他自己下的控件。。增加了很多属性

FLY000 发表于 2010-12-3 14:23:40

QTP对DEPHI自己的控件都识别不好吧,还谈什么DEPHI的第三方

FLY000 发表于 2010-12-3 16:55:52

QTP录制Delphi客户端 收藏
   虽然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").CreateUserDefinedObject("ttoolbar")
App.Options.ObjectIdentification("ttoolbar").OrdinalIdentifier = "location"
App.Options.ObjectIdentification("ttoolbar").MandatoryProperties.RemoveAll()
App.Options.ObjectIdentification("ttoolbar").MandatoryProperties.Add("nativeclass")
App.Options.ObjectIdentification("ttoolbar").MandatoryProperties.Add("text")
App.Options.ObjectIdentification("ttoolbar").AssistiveProperties.RemoveAll()
App.Options.ObjectIdentification("ttoolbar").AssistiveProperties.Add("window id")
App.Options.ObjectIdentification("ttoolbar").EnableSmartIdentification = False
App.Options.ObjectIdentification("ttoolbar").BaseFilterProperties.RemoveAll()
App.Options.ObjectIdentification("ttoolbar").OptionalFilterProperties.RemoveAll()

基本格式就如上面,如果你要新增某些其他识别该空间的变量,就是用App.Options.ObjectIdentification("ttoolbar").MandatoryProperties.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---------



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xxzmxx/archive/2010/08/19/5822563.aspx

1325831977 发表于 2011-4-26 15:55:42

楼主,你的问题解决了吗,我现在也遇到这样的问题,
页: [1]
查看完整版本: QTP 如何识别Delphi 的三方控件