QTP中对象的Window Id属性,如何通过Win Api方法进行获取?
在QTP中用Spy功能定位窗口信息的时候,可以看到一条Window ID,请问如何越过QTP,通过Win Api提供的方法直接得到该值?小弟不才,多方搜索均未果,请各位大侠不吝指点!
在线等候!
谢谢! 自己顶一下,千万别沉了。高手们是不是还没下班啊。。。继续等待。。。 应该是Control ID 先谢过大侠! 不知道Control id可以用什么方法得到啊? 关注,学习...... 等不到答案,怕是今晚睡不好觉了。。。 继续等待~ 你为什么要越过QTP?
回复 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去查询。。。
请各位站友不吝赐教,不知道有没有什么更好的方法? Win API 估计有通过HWND去获得window id的方法,但是HWND怎么获得呢,通过qtp提供的getRoProperty,
问题又绕回来了,必须通过window id去识别唯一的控件。是先有鸡还是先有蛋呢。:lol 我的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>
回复 11# 的帖子
很有帮助!:handshake感谢这为仁兄! 你是说Win API的findwindow吧?可以根据控件的title来获取的,自己写一个dll然后调用就可以了
页:
[1]