51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7085|回复: 24
打印 上一主题 下一主题

关于GUI自动化测试工具RFT的手动验证问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-7-14 16:28:08 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我按照http://www.cnblogs.com/mingzi/archive/2009/01/13.html这篇文章写了一个手动验证点。
就是自己写个类,然后创建ValueManager,按照上面说的把ValueManager转换为JAR文件。结果验证的时候,得到的验证点失败,然后查看验证的比较器,里面的值预期值和实际值都是相同的。不知道为什么会显示验证失败。


后来我查看了他的.rfpvt.发现基线和实际值是相同的,但预期值和实际值有点区别
下面是基线和实际值的.rfpvt的内容
<?xml version="1.0" encoding="UTF-8"?><MyPoint L="MyPoint"><X>6</X><Y>7</Y></MyPoint>

下面是预期值的内容:
<?xml version="1.0" encoding="UTF-8"?><UnsupportedObject L="MyPoint"><Y>7</Y><X>6</X></UnsupportedObject>

既然基线和实际结果是一样的,为什么预期结果会有差别呢?
还有vpManual的实现过程是什么样的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

25#
发表于 2012-8-28 15:02:07 | 只看该作者
找到了,在你发的链接里,刚才没打开,哈,非常感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2012-8-28 14:59:54 | 只看该作者
我想请教LZ一个基本的问题,你的验证点的构造的基本思路是什么样的?看了一下回复和问题,没有特别明白。能否给讲讲?
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2011-7-29 12:38:36 | 只看该作者
回复 22# usdark
呵呵,不容易才是好玩
因为灵活性高,所以才不容易嘛
回复 支持 反对

使用道具 举报

该用户从未签到

22#
 楼主| 发表于 2011-7-28 11:32:31 | 只看该作者
本帖最后由 usdark 于 2011-7-28 11:37 编辑

开发RFT挺不容易的,遇到的问题多多,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

21#
 楼主| 发表于 2011-7-28 10:10:16 | 只看该作者
我们大概找到原因了。我们用的RFT是试用版的,所以那些代理类都不可用……
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2011-7-27 19:31:52 | 只看该作者
1、哦,这样
2、判断树的状态,这样我也不是很清楚,不好意思没能帮上你,可以的话,你短消息发你的QQ或者MSN给我,再一起研究研究
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2011-7-27 17:23:42 | 只看该作者
a.click(atPath("节点名称"));是可以的。我的脚本上有这个功能。但问题是这样是没法判断是否展开树的。

因为如果是在树展开的状态去click的话,就会折叠起来。在测试的时候,不能知道click后树是展开了,还是折叠了。我要实现的一个功能中,需要首先判断树是否展开。

这个问题困扰很久了,虽然影响不是非常大,但没有解决,感觉总有点遗憾,呵呵。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2011-7-27 16:51:38 | 只看该作者
你这里要不不用TreeProxy试试
直接试试
GuiSubitemTestObject a = new GuiSubitemTestObject(page[page.length-1]);
a.click(atPath("节点名称"));
试试再看~
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2011-7-27 16:26:48 | 只看该作者
1、我就是这样构造的啊,除了与你查找的class属性不一样外
2、TestObject 也应该没问题
3、你的jdk的版本是多少,环境变量对么...
按道理应该不会有什么问题,你就是在JTreeProxy proxy = new JTreeProxy(a)这行出问题了?
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2011-7-27 15:54:53 | 只看该作者
1        你是如何构造的?构造成功了吗?传递的参数是什么类型的对象?
2        我的Tree类型是TestObject:     TestObject Tree = page[1];
3、4   用你的两种方法试过了,还是一样的错误
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2011-7-27 14:42:23 | 只看该作者
1、我在RFT试了随意去构造一个JTreeProxy
2、你这个Tree 是一个什么对象?
3、你直接试试这样JTreeProxy proxy = new JTreeProxy(page[1]);
4、你再试试
GuiTestObject a = (GuiTestObject )page[page.length-1];
JTreeProxy proxy = new JTreeProxy(a);
5、再不行的话,我索性在用这个方法写一个试试
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2011-7-27 13:55:06 | 只看该作者
我用:

Tree1 = page[0];
JTreeProxy proxy = new JTreeProxy(tree1);

试了,也是那样的错误。呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2011-7-27 13:53:06 | 只看该作者
我用:

Tree2 = page[1];
JTreeProxy proxy = new JTreeProxy(tree2);

试了,还是一样的错误。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2011-7-27 13:48:43 | 只看该作者
有的。这是调试框里page 的内容,有两个对象


这是把两个树的属性都打印出来的(我把.class属性标成红色了):
{.clientRectangle=java.awt.Rectangle[x=0,y=0,width=144,height=558], .description=null Object, .class=SysTreeView32, .textColor=java.awt.Color[r=0,g=0,b=0], .visible=true, .windowedcontrol=true, .name=null Object, .style=1442923061, .value=null Object, .helpFile=null Object, .text=, .enabled=true, .helpTopic=0, .keyboardShortcut=null Object, .defaultAction=null Object, .exstyle=1048576, .screenRectangle=java.awt.Rectangle[x=769,y=340,width=144,height=558], .backgroundColor=java.awt.Color[r=255,g=255,b=255], .processId=5064, .classstyle=16392, .numChildren=7, .associatedId=593574, .hasFocus=false, .font=com.rational.test.ft.value.FontInfo[name=微软雅黑,style=0,size=9], .id=593574, .hwnd=593574, .state=1048576, .role=9, .help=null Object}

{.clientRectangle=java.awt.Rectangle[x=0,y=0,width=232,height=537], .description=null Object, .class=SysTreeView32, .textColor=java.awt.Color[r=0,g=0,b=0], .visible=true, .windowedcontrol=true, .name=null Object, .style=1443971637, .value=null Object, .helpFile=null Object, .text=, .enabled=true, .helpTopic=0, .keyboardShortcut=null Object, .defaultAction=null Object, .exstyle=1049088, .screenRectangle=java.awt.Rectangle[x=528,y=340,width=236,height=558], .backgroundColor=java.awt.Color[r=255,g=255,b=255], .processId=5064, .classstyle=16392, .numChildren=7, .associatedId=68318, .hasFocus=false, .font=com.rational.test.ft.value.FontInfo[name=微软雅黑,style=0,size=9], .id=68318, .hwnd=68318, .state=1048576, .role=9, .help=null Object}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2011-7-27 13:31:16 | 只看该作者
1、你输出一下你的“page.length-1”,个人觉得应该不是1
2、Tree = page[1]试试
按道理应该是Tree没有那个对象,所以你实例化对象的时候根本就装载不了吧,没有那个对象传递啊,构造方法就不对吧
试试吧
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2011-7-27 10:53:55 | 只看该作者
1 呵呵。我是因为公司测试需要,所以学习RFT。我们的界面是用eclipse写的,运行在windows操作系统。
2 主界面上有两颗树,就是两个SysTreeView32对象,在find 的时候会找到两个属性为SysTreeView32的TestObject对象,而我要操作的树是后面一颗,所以我选择后面的一个。
3 我试过直接把TestObject作为对象传递:
  TestObject[] page = getRootTestObject().find(atDescendant(".class", "SysTreeView32"));
  Tree = page[page.length-1];
  JTreeProxy proxy = new JTreeProxy(Tree);
  结果,报错是一样的。
4 映射对象只能是树的话,那么这个对象的类型是什么样的呢?  另外映射XML应该在哪里查看?我不是很明白这个。

谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2011-7-25 17:23:21 | 只看该作者
休假很舒服吧,羡慕,指教说不上,一起探讨吧,难得有兴趣
1、你这里是测试win32的程序吧
2、我对win32程序不是很了解,但是个人觉得你在这里应该是一个页面中有很多SysTreeView32对象?这样的话,你用只用了一个识别方法去寻找SysTreeView32,RFT是无法识别的
3、如果你的页面中只有一个SysTreeView32,你所说的寻找最后一颗树,难道是节点?因为你这里定义的是ITestDataTree对象,这是树中的节点数据
4、我觉得,你构建的代理类JTreeProxy ,其中映射的对象只能是树,而不能是cdTree之类的数据,可以看看其中的映射XML就知道了,其对象都是一一映射的。
你可以将其界面的情况说说,也许可以一起更好的分析一下
呵呵,希望不要误导你了
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2011-7-25 16:40:07 | 只看该作者
本帖最后由 usdark 于 2011-7-25 17:08 编辑

我的object是这样的:
1   我先定义一个TestObject[]的对象,就是找到树;
                        TestObject[] page = getRootTestObject().find(atDescendant(".class",
                                        "SysTreeView32"));

2 然后我把TestObject找到的最后一颗树(就是我要操作的树),定义为一个ITestDataTree类的对象cdTree;
                        cdTree = (ITestDataTree)page[page.length-1].getTestData("tree");

3 把 cdTree传递给JTreeProxy类的构造函数:
                       JTreeProxy proxy = new JTreeProxy(cdTree);

cdTree就是那个object了;我也曾经试过直接把TestObject对象(就是不把最后一颗树转化为ITestDataTree类型,而直接用TestObject类型),结果他们的报错是一样的。

这几天休假,呵呵,没有来论坛。请LS指点。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2011-7-21 14:15:38 | 只看该作者
我觉得:
1、你这里实例化了一个JTree的代理类,想通过这个代理类直接去操作AUT,刚开始弄RFT就这样,想法不错~~~
2、这里的异常是.NoClassDefFoundError是无法找到某个类,哪个类,个人觉得是你那个object类是不是有问题,是不是不是标准的注册的ProxyTestObject类?
具体能看看你的Script1中关于object?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 00:42 , Processed in 0.080910 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表