zzs4026 发表于 2008-9-2 13:45:28

跪谢大家的帮忙!

大家好,首先感谢论坛给我的帮助,现在本人遇到一个很难解决的问题,严重的阻碍了测试工作的进度,万分焦急,万般无奈下想到了论坛里的兄弟姐妹,希望大家能帮忙解决,小弟跪谢……

背景:
小弟目前正着手于测试一款用VC实现GUI的图形处理软件,其中多数控件都是公司通过继承一些windows的类自己封装的对象,其中下边这个难以搞定的东西就是这个贴子的“主角”



上图的粉红色方框框住的是用QTP在录制时,QTP识别到的对象,但实际本人点击的是椭圆对话框中的Free wall按钮,就是说QTP无法识别到Free wall只能识别到粉红色的框代表的对象,我点击Create room和My floorplans在Expert View生成的描述性代码都是一样的只是点击的坐标点不同,如下:
Window("应用软件名").WinObject("MacromediaFlashPlayerActiveX").Click 156,58    '点击Free wall生成代码
Window("应用软件名").WinObject("MacromediaFlashPlayerActiveX").Click 132,95    '点击Create room生成代码
Window("应用软件名").WinObject("MacromediaFlashPlayerActiveX").Click 141,124   '点击My floorplans生成代码

回放录制的代码过程中QTP在做点击椭圆框住的按钮时提示,因为无法识别对象,后边的操作都是基于前边的操作才能进行的,于是测试就提前搁浅,本人已经实在没有办法处理了,试了用模拟录制和低级录制都没有效果,研究了两天,没有丝毫进展,希望在这里能得到达人的指点,本人感激不尽,先谢过!

对象库中截图:


[ 本帖最后由 zzs4026 于 2008-9-2 15:19 编辑 ]

hsjzfling 发表于 2008-9-2 13:53:25

VC弄的GUI貌似QTP识别不了的。。。即使花很大代价弄好了也不值得,建议考虑换工具吧~~

rcpp 发表于 2008-9-2 13:57:12

winrunner试一下

zzs4026 发表于 2008-9-2 13:58:48

难道说大家用QTP都是在做Web测试的吗?!

zzs4026 发表于 2008-9-2 14:00:45

谢谢大家的建议!
只是QTP不是就是在WinRunner基础上做好的吗?QTP不行,WinRunner难道还可以?!

zzs4026 发表于 2008-9-2 14:39:18

等待达人点拔,顶起来

lingxin5013 发表于 2008-9-2 14:56:56

哥们 虚拟对象使用没有?
把你的那个东西识别成一个虚拟botton 然后执行click 看看 可能解决,不能也反馈下信息再想办法
(恩,我刚找了个例子实验了下,是可以的.希望对你有帮助!哇嘎嘎~~~~~`)

[ 本帖最后由 lingxin5013 于 2008-9-2 15:05 编辑 ]

假装不在 发表于 2008-9-2 15:05:40

麻烦把WinObject("MacromediaFlashPlayerActiveX")这个对象在对象库中的属性截图出来给大家看。
看样子QTP只识别到了紫色框的这个对象,对象里面的东西都识别不到。
如果识别到,或者应该是有再多一个自对象_1,_2,_3的。

zzs4026 发表于 2008-9-2 15:20:39

对啊,我就是和“假装不在”想的一样啊,不知道有没有什么办法解决,谢过了!



[ 本帖最后由 zzs4026 于 2008-9-2 15:23 编辑 ]

zzs4026 发表于 2008-9-2 15:22:26

原帖由 lingxin5013 于 2008-9-2 14:56 发表 http://bbs.51testing.com/images/common/back.gif
哥们 虚拟对象使用没有?
把你的那个东西识别成一个虚拟botton 然后执行click 看看 可能解决,不能也反馈下信息再想办法
(恩,我刚找了个例子实验了下,是可以的.希望对你有帮助!哇嘎嘎~~~~~`)


这个还没有用过,我会试试,找找相应的虚拟对象操作方法,如果哥们你有,发个网址或消息给我,帮我缩短探索时间,谢谢了!

lingxin5013 发表于 2008-9-2 15:26:06

看过了 你的对象仓库中的2个对象都是一样的而且window id是变动的所以正常渠道是没有用的 说了使用虚拟对象,我刚刚实验过了 是可以的.我来告诉你操作方法
选择tools->virtual objects->new virtual objects 把对象映射成一个button 然后重新录制一遍就可以了

[ 本帖最后由 lingxin5013 于 2008-9-2 15:29 编辑 ]

假装不在 发表于 2008-9-2 15:28:11

问你个问题,你的那些控件能接受焦点不?
如果能接受焦点,你可以通过让它们得到焦点的方法去搞

zzs4026 发表于 2008-9-2 15:39:43

原帖由 lingxin5013 于 2008-9-2 15:26 发表 http://bbs.51testing.com/images/common/back.gif
看过了 你的对象仓库中的2个对象都是一样的而且window id是变动的所以正常渠道是没有用的 说了使用虚拟对象,我刚刚实验过了 是可以的.我来告诉你操作方法
选择tools->virtual objects->new virtual objects 把对象映 ...

好的,谢谢您了,热心肠的大好人啊!
不过,刚才我的截图有点问题,以下是我重新试的,被画了黑线的描述语句是点击Free wall产生的代码
另外两个按顺序分别是Create room和My floorplans产生的代码,可以看到这时的对象库只有一个对象,没有两个,之前可能是我做错了

zzs4026 发表于 2008-9-2 15:44:23

原帖由 假装不在 于 2008-9-2 15:28 发表 http://bbs.51testing.com/images/common/back.gif
问你个问题,你的那些控件能接受焦点不?
如果能接受焦点,你可以通过让它们得到焦点的方法去搞


这个软件比较恶心,如果你点击了刚才说的MacromediaFlashPlayerActiveX(就是那个2D layout)之后,它才能通过Tab键选择
Free wall
Create room
My floorplans
这三个按钮,如果开始没有点击MacromediaFlashPlayerActiveX,单靠Tab是无法定位到这三个键的

假装不在 发表于 2008-9-2 15:50:39

那这样就简单点。
你就
Window("应用软件名").WinObject("MacromediaFlashPlayerActiveX").Click
Window("应用软件名").WinObject("MacromediaFlashPlayerActiveX").type micTab
'这里只说了个思路
.....
.....
不管黑猫白猫,抓到老鼠就是好猫。如果控件识别不到,就先这样凑活

lingxin5013 发表于 2008-9-2 15:52:27

你没有搞错  你的3个控键都是一样的 就算你通过坐标跑起来了 也没有用 大家共用一个对象 用坐标区分,等你下次重新启动后仍然会错,为什么?坐标改变了啊?
哎~ 
  虚拟对象 虚拟对象 虚拟对象    虚拟对象!!!!

lingxin5013 发表于 2008-9-2 15:55:19

你只要把那3个东西分别映射成标准按钮,然后在录制状态下重新选择这个按钮你的click就不是坐标了! 

假装不在 发表于 2008-9-2 15:56:18

原帖由 lingxin5013 于 2008-9-2 15:52 发表 http://bbs.51testing.com/images/common/back.gif
你没有搞错  你的3个控键都是一样的 就算你通过坐标跑起来了 也没有用 大家共用一个对象 用坐标区分,等你下次重新启动后仍然会错,为什么?坐标改变了啊?
哎~ 
  虚拟对象 虚拟对象 虚拟对象    ...

楼上同学你没看仔细,扣分了...
那三个控件是根本识别不到的。
里面能识别到的是外面紫色框的那个控件,类似一个inclube.
里面三个VC控件识别不到,所以QTP识别起来就是你点击控件。
不是同个对象不同坐标。

lingxin5013 发表于 2008-9-2 15:59:28

LS我知道 使用object spy看的话 是一个整体的框架因此不能够选中里面的控键盘
但是使用虚拟控键的话,在虚拟botton下是可以画你的botton区域的,只要画下然后在录制状态下重新点击下是可以的,我原来遇到过LZ这样的问题通过这个方法解决的,你也可以实验下.

zzs4026 发表于 2008-9-2 16:01:00

原帖由 lingxin5013 于 2008-9-2 15:26 发表 http://bbs.51testing.com/images/common/back.gif
看过了 你的对象仓库中的2个对象都是一样的而且window id是变动的所以正常渠道是没有用的 说了使用虚拟对象,我刚刚实验过了 是可以的.我来告诉你操作方法
选择tools->virtual objects->new virtual objects 把对象映 ...


老大,我这边按你说的新建了两个虚拟对象,虚拟成Button,一个取名为Free wall另一个取名为Create room,并且与截图中的按钮对应,但在关键字视图中我找不到它们(Free wall和Create room)啊,并且在对象库里也看不到有他们?请问产生了虚拟对象后我还要不要做别的操作,才能导入到库中?

另外,如果虚拟出对象是不是我在标记(Mark)时的几个按钮不能同样大小,要不同样大小程序也识别不出来?我看它对他们的区别都只是靠长宽(x,y)来区分的,不知道认识的对不对,另外虚拟对象是弹出的对话框提示
Identify object using
1.Entire parent hierarchy2.Parent only
1和2有什么区别,请指教,谢谢你了!
页: [1] 2 3
查看完整版本: 跪谢大家的帮忙!