qq6666566 发表于 2009-6-8 17:27:16

QTP中对象的Window Id属性,如何通过Win Api方法进行获取?

在QTP中用Spy功能定位窗口信息的时候,可以看到一条Window ID,请问如何越过QTP,通过Win Api提供的方法直接得到该值?
小弟不才,多方搜索均未果,请各位大侠不吝指点!
在线等候!
谢谢!

qq6666566 发表于 2009-6-8 17:48:48

自己顶一下,千万别沉了。高手们是不是还没下班啊。。。继续等待。。。

shanxi 发表于 2009-6-8 18:02:47

应该是Control ID

qq6666566 发表于 2009-6-8 18:16:17

先谢过大侠! 不知道Control id可以用什么方法得到啊?

fei.ge 发表于 2009-6-8 19:22:51

关注,学习......

qq6666566 发表于 2009-6-8 19:39:44

等不到答案,怕是今晚睡不好觉了。。。

qq6666566 发表于 2009-6-9 15:13:18

继续等待~

intothestorm 发表于 2009-6-9 15:35:07

你为什么要越过QTP?

qq6666566 发表于 2009-6-9 20:35:32

回复 8# 的帖子

举个例子,在QTP中,Window Id是识别对象时自动抓取的,而且是在测试运行之前保存于Object Repository里面的,无法在运行测试时实时更新。
如果项目中所有对象的Window Id信息是由开发提供的,每个对象的Window Id在不同版本都会变化,而Object Text信息因为软件的多语言开发不能作为唯一识别符,那么是否可以通过读取开发人员提供的Window Id列表文件,达到给对象的Window Id灵活赋值的目的?因为每个版本更改的对象、更改的Window Id数量太大了,无法通过QTP手动去更新,这也就是问题的所在。
查找了QTP的帮助文档,没发现QTP提供接口返回对象的属性信息(例如Window Id、Object text),这才想到通过Win Api去查询。。。
请各位站友不吝赐教,不知道有没有什么更好的方法?

intothestorm 发表于 2009-6-10 11:07:33

Win API 估计有通过HWND去获得window id的方法,但是HWND怎么获得呢,通过qtp提供的getRoProperty,
问题又绕回来了,必须通过window id去识别唯一的控件。是先有鸡还是先有蛋呢。:lol

intothestorm 发表于 2009-6-10 11:17:20

我的OR里也有一些开发自定义的控件,需要通过win id去唯一标示,但是这些值都是长期不变的,你可以向开发提要求。
如果你被开发无情地驳回:lol ,可以考虑我想到的一个方法:

将你的OR导出为XML,做一份开发提供的控件名称与下面的Name映射表。
开发控件Name XXX->Name="YACLSimpleVObj"
开发控件WinIdNNN->10019
然后写个脚本,根据这个映射关系将10019替换为NNN

<qtpRep:Object Class="WinObject" Name="YACLSimpleVObj">
<qtpRep:Properties>
<qtpRep:Property Name="window id" Hidden="0" ReadOnly="0" Type="NUMBER">
<qtpRep:Value RegularExpression="0">10019</qtpRep:Value>
</qtpRep:Property>

qq6666566 发表于 2009-6-10 14:03:10

回复 11# 的帖子

很有帮助!:handshake
感谢这为仁兄!

rayblue 发表于 2009-6-10 14:09:53

你是说Win API的findwindow吧?可以根据控件的title来获取的,自己写一个dll然后调用就可以了
页: [1]
查看完整版本: QTP中对象的Window Id属性,如何通过Win Api方法进行获取?