51Testing软件测试论坛

标题: 描述性编程中是否可以使用虚拟对象(图) [打印本页]

作者: 423799223    时间: 2008-7-3 16:47
标题: 描述性编程中是否可以使用虚拟对象(图)
比如我录制一个C/S的程序,QTP9.5识别不出里面的一个lable(C++Build编写),其它的可以识别,但是如果我新增一个该Lable的虚拟对象,然后再录制就可以了
但是我现在写的脚本是描述性编程。不依靠对象库的,我尝试使用虚拟对象结果不行
使用描述性编程代码如下:
Window("text:=Test","object class:=Tfrm_main").WinObject("object class:=TRzPageControl").VirtualObject("object1").Click
使用虚拟对象录制代码如下:
Window("Test").WinObject("object class:=TRzPageControl").VirtualObject("object1").Click

说明:
Window("Test")为软件主窗体
WinObject("object class:=TRzPageControl")为上面的Lable标签   这个是自动识别出来的,必须加上虚拟对象属性才能识别
VirtualObject("object1").Click为手动添加的虚拟对象

请问大家遇到此类问题怎么解决

[ 本帖最后由 423799223 于 2008-7-3 16:49 编辑 ]
作者: tanky    时间: 2008-7-3 17:17
印象中不可以。
作者: 今天有雾    时间: 2008-7-3 17:22
这个此处识别不了,也没有说清楚到底是哪个地方,还是要试一下,看看能支持不?不过本人我也没有试过
作者: 423799223    时间: 2008-7-3 19:23
Window("Test").WinObject("object class:=TRzPageControl").VirtualObject("object1").Click
是可以运行的  我想知道在描述性编程中怎么解决上面这个问题
作者: zte_boy    时间: 2008-7-4 00:18
应该是不可以的,描述性编程只不过是把对象库中的属性用语言形式表述出来
对于不识别的对象,描述性编程应该也是不适用的
作者: 423799223    时间: 2008-7-4 10:30
如果这样  那不是非得使用对象库么?
作者: 假装不在    时间: 2008-7-4 17:56
不行。
你要先虚拟出对象后,再添加到对象库中,然后再去....
作者: 夜来烧    时间: 2008-7-7 17:04
个人感觉虚拟对象是抓取页面上某个坐标区间做为了虚拟控件,如果这个控件位置变动,哪么就失效,按照这种思路,会有什么帮助呢?
作者: 423799223    时间: 2008-7-7 21:25
我觉得虚拟对象比较的应该是和图像检查点一样的
作者: 学会洒脱    时间: 2008-7-11 13:33
我不知道对于虚对象,winrunner与QTP有多大的区别,现在为止还没接触过QTP.但我觉得楼主这样在描述性编程中使用虚对象,似乎并不可行啊
作者: lingxin5013    时间: 2008-7-11 15:22
先虚拟 加仓库 录制 结束
虚拟对象不支持检查点吧 好象是的.
作者: rayblue    时间: 2009-6-10 11:21
原帖由 zte_boy 于 2008-7-4 00:18 发表
应该是不可以的,描述性编程只不过是把对象库中的属性用语言形式表述出来
对于不识别的对象,描述性编程应该也是不适用的

是的,描述性编程也只能针对能识别的对象
而一般如果要使用虚拟对象都是在对象无法被识别的情况下
2者是有冲突的
作者: lantianwei    时间: 2009-6-10 11:35
唉 虚拟对象不就是一个坐标确定的对象吗?你把坐标写在DP中不就行了吗?虚拟对象只是HP为了让其也可以和标准对象一样的管理和展现。。。
作者: rayblue    时间: 2009-6-10 14:25
原帖由 lantianwei 于 2009-6-10 11:35 发表
唉 虚拟对象不就是一个坐标确定的对象吗?你把坐标写在DP中不就行了吗?虚拟对象只是HP为了让其也可以和标准对象一样的管理和展现。。。

你用虚拟对象的时候好像QTP是把这个"区域"作为一个对象认出来了,像你说得只不过是根据他的位置信息来确定,但是实际上QTP是无法识别这个区域的,所以用描述性编程无法描述出来
作者: lantianwei    时间: 2009-6-10 15:15
原帖由 rayblue 于 2009-6-10 14:25 发表

你用虚拟对象的时候好像QTP是把这个"区域"作为一个对象认出来了,像你说得只不过是根据他的位置信息来确定,但是实际上QTP是无法识别这个区域的,所以用描述性编程无法描述出来

我是说错了,不好意思, 但有一点依然是对的,因为虚拟对象是用坐标来定位对象的,那么你可以直接去操作坐标那块地方 比如虚拟一个按钮,它实现点击操作时是点击其坐标中心 那么在DP中其实是可以直接进行点击的 只不过加了个坐标点 虚拟对象其实只是为了让不识别对象更加可视话
作者: onlonely    时间: 2009-6-10 20:43
虚拟对象的确不能在描述性编程后面使用,
按照描述性编程的要求,父对象如果描述性编程了,那么子对象也必须描述性编程,
按照这个思路,虚拟对象显然是子对象,而你的父对象已经描述性编程了,所以作为子对象的虚拟对象就不识别了.
我认为比较好的办法是用GetROProperty取得你无法正确识别对象的相对坐标,再单击.




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