51Testing软件测试论坛

标题: 跪谢大家的帮忙! [打印本页]

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

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

[attach]45107[/attach]

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

对象库中截图:
[attach]45111[/attach]

[ 本帖最后由 zzs4026 于 2008-9-2 15:19 编辑 ]
作者: hsjzfling    时间: 2008-9-2 13:53
VC弄的GUI貌似QTP识别不了的。。。即使花很大代价弄好了也不值得,建议考虑换工具吧~~
作者: rcpp    时间: 2008-9-2 13:57
winrunner试一下
作者: zzs4026    时间: 2008-9-2 13:58
难道说大家用QTP都是在做Web测试的吗?!
作者: zzs4026    时间: 2008-9-2 14:00
谢谢大家的建议!
只是QTP不是就是在WinRunner基础上做好的吗?QTP不行,WinRunner难道还可以?!
作者: zzs4026    时间: 2008-9-2 14:39
等待达人点拔,顶起来
作者: lingxin5013    时间: 2008-9-2 14:56
哥们 虚拟对象使用没有?
把你的那个东西识别成一个虚拟botton 然后执行click 看看 可能解决,不能也反馈下信息再想办法
(恩,我刚找了个例子实验了下,是可以的.希望对你有帮助!  哇嘎嘎~~~~~`)

[ 本帖最后由 lingxin5013 于 2008-9-2 15:05 编辑 ]
作者: 假装不在    时间: 2008-9-2 15:05
麻烦把WinObject("MacromediaFlashPlayerActiveX")这个对象在对象库中的属性截图出来给大家看。
看样子QTP只识别到了紫色框的这个对象,对象里面的东西都识别不到。
如果识别到,或者应该是有再多一个自对象_1,_2,_3的。
作者: zzs4026    时间: 2008-9-2 15:20
对啊,我就是和“假装不在”想的一样啊,不知道有没有什么办法解决,谢过了!

[attach]45112[/attach]

[ 本帖最后由 zzs4026 于 2008-9-2 15:23 编辑 ]
作者: zzs4026    时间: 2008-9-2 15:22
原帖由 lingxin5013 于 2008-9-2 14:56 发表
哥们 虚拟对象使用没有?
把你的那个东西识别成一个虚拟botton 然后执行click 看看 可能解决,不能也反馈下信息再想办法
(恩,我刚找了个例子实验了下,是可以的.希望对你有帮助!  哇嘎嘎~~~~~`)



这个还没有用过,我会试试,找找相应的虚拟对象操作方法,如果哥们你有,发个网址或消息给我,帮我缩短探索时间,谢谢了!
作者: lingxin5013    时间: 2008-9-2 15:26
看过了 你的对象仓库中的2个对象都是一样的而且window id是变动的所以正常渠道是没有用的 说了使用虚拟对象,我刚刚实验过了 是可以的.我来告诉你操作方法
选择tools->virtual objects->new virtual objects 把对象映射成一个button 然后重新录制一遍就可以了

[ 本帖最后由 lingxin5013 于 2008-9-2 15:29 编辑 ]
作者: 假装不在    时间: 2008-9-2 15:28
问你个问题,你的那些控件能接受焦点不?
如果能接受焦点,你可以通过让它们得到焦点的方法去搞
作者: zzs4026    时间: 2008-9-2 15:39
原帖由 lingxin5013 于 2008-9-2 15:26 发表
看过了 你的对象仓库中的2个对象都是一样的而且window id是变动的所以正常渠道是没有用的 说了使用虚拟对象,我刚刚实验过了 是可以的.我来告诉你操作方法
选择tools->virtual objects->new virtual objects 把对象映 ...


好的,谢谢您了,热心肠的大好人啊!
不过,刚才我的截图有点问题,以下是我重新试的,被画了黑线的描述语句是点击Free wall产生的代码
另外两个按顺序分别是Create room和My floorplans产生的代码,可以看到这时的对象库只有一个对象,没有两个,之前可能是我做错了
[attach]45113[/attach]
作者: zzs4026    时间: 2008-9-2 15:44
原帖由 假装不在 于 2008-9-2 15:28 发表
问你个问题,你的那些控件能接受焦点不?
如果能接受焦点,你可以通过让它们得到焦点的方法去搞



这个软件比较恶心,如果你点击了刚才说的MacromediaFlashPlayerActiveX(就是那个2D layout)之后,它才能通过Tab键选择
Free wall
Create room
My floorplans
这三个按钮,如果开始没有点击MacromediaFlashPlayerActiveX,单靠Tab是无法定位到这三个键的
作者: 假装不在    时间: 2008-9-2 15:50
那这样就简单点。
你就
Window("应用软件名").WinObject("MacromediaFlashPlayerActiveX").Click
Window("应用软件名").WinObject("MacromediaFlashPlayerActiveX").type micTab
'这里只说了个思路
.....
.....
不管黑猫白猫,抓到老鼠就是好猫。如果控件识别不到,就先这样凑活
作者: lingxin5013    时间: 2008-9-2 15:52
你没有搞错  你的3个控键都是一样的 就算你通过坐标跑起来了 也没有用 大家共用一个对象 用坐标区分,等你下次重新启动后仍然会错,为什么?坐标改变了啊?
哎~ 
  虚拟对象 虚拟对象 虚拟对象    虚拟对象!!!!
作者: lingxin5013    时间: 2008-9-2 15:55
你只要把那3个东西分别映射成标准按钮,然后在录制状态下重新选择这个按钮你的click就不是坐标了! 
作者: 假装不在    时间: 2008-9-2 15:56
原帖由 lingxin5013 于 2008-9-2 15:52 发表
你没有搞错  你的3个控键都是一样的 就算你通过坐标跑起来了 也没有用 大家共用一个对象 用坐标区分,等你下次重新启动后仍然会错,为什么?坐标改变了啊?
哎~ 
  虚拟对象 虚拟对象 虚拟对象    ...


楼上同学你没看仔细,扣分了...
那三个控件是根本识别不到的。
里面能识别到的是外面紫色框的那个控件,类似一个inclube.
里面三个VC控件识别不到,所以QTP识别起来就是你点击控件。
不是同个对象不同坐标。
作者: lingxin5013    时间: 2008-9-2 15:59
LS我知道 使用object spy看的话 是一个整体的框架因此不能够选中里面的控键盘
但是使用虚拟控键的话,在虚拟botton下是可以画你的botton区域的,只要画下然后在录制状态下重新点击下是可以的,我原来遇到过LZ这样的问题通过这个方法解决的,你也可以实验下.
作者: zzs4026    时间: 2008-9-2 16:01
原帖由 lingxin5013 于 2008-9-2 15:26 发表
看过了 你的对象仓库中的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 hierarchy  2.Parent only
1和2有什么区别,请指教,谢谢你了!
作者: hsjzfling    时间: 2008-9-2 16:02
虚拟对象也只是一种参考方法,并不是万能的,至少在51培训时老大就给出过虚拟对象都无法创建的对象实例,过于底层的东东,是QTP这种高级东东无法触及的。所以,不要将所有的期望都寄托在虚拟对象上哦~
作者: zzs4026    时间: 2008-9-2 16:03
原帖由 假装不在 于 2008-9-2 15:56 发表


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


对啊,我也是向您这样想的一会试试你的办法
作者: zzs4026    时间: 2008-9-2 16:05
原帖由 hsjzfling 于 2008-9-2 16:02 发表
虚拟对象也只是一种参考方法,并不是万能的,至少在51培训时老大就给出过虚拟对象都无法创建的对象实例,过于底层的东东,是QTP这种高级东东无法触及的。所以,不要将所有的期望都寄托在虚拟对象上哦~


51培训,在哪,我也想去交流交流,怎么去啊?!其实我们这个行业的可以整一个同城群,大家相互帮助,互相帮忙!
作者: lingxin5013    时间: 2008-9-2 16:11
1:在专家视图中是否出现virtualBotton的语句?
2:对象仓库中是可以看到的
3:去虚拟对象管理看你的虚拟对象
4:.1:Entire parent hierarchy  2.Parent only 选择默认第2个就可以了

Browser("Browser").Page("跪谢大家的帮忙! - [QuickTest").VirtualButton("button").Click
作者: zzs4026    时间: 2008-9-2 16:33
原帖由 lingxin5013 于 2008-9-2 15:59 发表
LS我知道 使用object spy看的话 是一个整体的框架因此不能够选中里面的控键盘
但是使用虚拟控键的话,在虚拟botton下是可以画你的botton区域的,只要画下然后在录制状态下重新点击下是可以的,我原来遇到过LZ这 ...



谢谢你的建议,不过我试过了,以下截图可以看出QTP认出了这些虚拟button
[attach]45116[/attach]
但我执行click的操作没有效果,QTP每次在运行到click的时候都会报错
[attach]45117[/attach]
作者: lingxin5013    时间: 2008-9-2 16:38
把你开始录制坐标性的对象去掉 在运行一次!
作者: zzs4026    时间: 2008-9-2 16:44
原帖由 lingxin5013 于 2008-9-2 16:11 发表
1:在专家视图中是否出现virtualBotton的语句?
2:对象仓库中是可以看到的
3:去虚拟对象管理看你的虚拟对象
4:.1:Entire parent hierarchy  2.Parent only 选择默认第2个就可以了

Browser("Browser ...


看来我把问题想简单了,在做第一步
Window("InteriCAD Lite").WinObject("MacromediaFlashPlayerActiveX").Click 168,26
就已经提示不能识别MacromediaFlashPlayerActiveX了
[attach]45119[/attach]
这个MacromediaFlashPlayerActiveX在ActiveScreen中就是那个被框住的“主角”,我快哭了,看来是搞不定了

[attach]45118[/attach]

[ 本帖最后由 zzs4026 于 2008-9-2 16:45 编辑 ]
作者: lingxin5013    时间: 2008-9-2 16:54
哎 这个问题 我已经尽力了! 搞不出来,要是不行不好意思啊!
我会跟进的,希望看到好的答案!
LS 你就哭吧 哇嘎嘎~
作者: lingxin5013    时间: 2008-9-2 16:57
你可以找陈能技叔叔帮你看看~ 他应该可以帮你搞定 good luck
作者: zzs4026    时间: 2008-9-2 17:05
原帖由 lingxin5013 于 2008-9-2 16:57 发表
你可以找陈能技叔叔帮你看看~ 他应该可以帮你搞定 good luck


哎!谢谢你们了,那我怎么找那个陈技能叔叔呢?!
给搭个桥好不?呵呵!
作者: lingxin5013    时间: 2008-9-3 09:28
呵呵  他是自由人  你去首页右边的BLOG去找下他的BLOG吧 然后把问题给他看看 呵呵
作者: 假装不在    时间: 2008-9-3 09:33
我老觉得跳转焦点的方法就可以了。干嘛用虚拟对象呢。我个人很不喜欢用这个。
作者: zzs4026    时间: 2008-9-3 10:26
原帖由 假装不在 于 2008-9-3 09:33 发表
我老觉得跳转焦点的方法就可以了。干嘛用虚拟对象呢。我个人很不喜欢用这个。



兄弟,你没看到我在27楼发的帖焦点的父对象它都不能认识,另外发现这个软件还有个毛病即使焦点能调到指定位置,过没两秒焦点就会丢失,唉!没招这软件做的,就是不让你测,你有啥招?!
作者: 假装不在    时间: 2008-9-3 11:02
原帖由 hsjzfling 于 2008-9-2 16:02 发表
虚拟对象也只是一种参考方法,并不是万能的,至少在51培训时老大就给出过虚拟对象都无法创建的对象实例,过于底层的东东,是QTP这种高级东东无法触及的。所以,不要将所有的期望都寄托在虚拟对象上哦~

我不知道51的老大说的过于底层的东西是指什么?QTP支持VBS这点足够让用户扩展出许多其它功能。
但是说到底层?例如....
作者: HELIN-3010    时间: 2008-9-4 09:41
标题: 不要随便下跪,给自己留一点尊严
怀着一颗感恩的心感谢别人的帮助
在别人需要帮助的时候施以援手就行了
不要动不动就随便跪谢别人
给自己留一点尊严好不好?
作者: zzs4026    时间: 2008-9-4 09:54
原帖由 HELIN-3010 于 2008-9-4 09:41 发表
怀着一颗感恩的心感谢别人的帮助
在别人需要帮助的时候施以援手就行了
不要动不动就随便跪谢别人
给自己留一点尊严好不好?


大哥,你也真够损的,别那么较真行不行,来这里的主要目的是大家讨论和相互学习
和下跪难道真的有联系吗?
本人就是怀揣感恩之心,才说出此番话,感谢论坛给我的帮助!
如果人家说搞不定就“死定了”,没搞定是不是你也要人“挂”掉你才甘心啊?!叫什么真,就你有尊严?!
怎么说你!!!不帮忙也就算了,泼什么冷水???
最憎恨这种人,乌鸦落到猪身上……

[ 本帖最后由 zzs4026 于 2008-9-4 09:55 编辑 ]
作者: lingxin5013    时间: 2008-9-4 10:10
目前的把法就就是到这一步时候 你手动吧 来个半自动的也可以
作者: zzs4026    时间: 2008-9-4 10:19
原帖由 lingxin5013 于 2008-9-4 10:10 发表
目前的把法就就是到这一步时候 你手动吧 来个半自动的也可以



呵呵,谢谢大家的帮助!
虽然没搞定,但相信大家都尽力了,并耐心的看完了我不很清楚的描述,我自己也试过看别人的描述是很痛苦的事情,半猜式的理解,所以很感谢大家能耐下心帮我两天,我也没招了,呵呵,衷心谢谢帮我的人!
作者: rcpp    时间: 2008-9-4 10:55
to LZ,有一点我看了半天也没弄明白:你是因为录制下来的是坐标点击,而不是对象操作所以烦恼吗?
假如你这个MacromediaFlashPlayerActiveX对象中的三个按钮在其中的相对位置是稳定的,那用坐标也没什么问题啊!click方法是以对象左上角为原点的相对坐标,只要不是MacromediaFlashPlayerActiveX对象上的三个按钮位置会变化,这个脚本是可以回放的啊
作者: szs0434    时间: 2008-9-4 16:16
可否试试模拟录制和低级别录制?
作者: mr.bee    时间: 2008-9-4 20:19
虚拟对像应该是没问题的
作者: 今天有雾    时间: 2008-9-5 13:32
希望LZ解决后,总结一下出来,给我们留点经验呀,哈哈
作者: zzs4026    时间: 2008-9-10 13:28
原帖由 rcpp 于 2008-9-4 10:55 发表
to LZ,有一点我看了半天也没弄明白:你是因为录制下来的是坐标点击,而不是对象操作所以烦恼吗?
假如你这个MacromediaFlashPlayerActiveX对象中的三个按钮在其中的相对位置是稳定的,那用坐标也没什么问题啊!cli ...


看二十七楼的显示,QTP认不到MacromediaFlashPlayerActiveX所以报错,即使你点击的坐标知道也没有用
兄才是不是让我把MacromediaFlashPlayerActiveX去掉直接
Windows("").click x,y
这么做吗
作者: rcpp    时间: 2008-9-10 14:03
标题: 回复 43# 的帖子
你原本录制的脚本也回放不了是吗?
如果是那样就只能用对窗口点击了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2