51Testing软件测试论坛

标题: 在线的老大来指条明路 [打印本页]

作者: rftxrx    时间: 2014-2-20 15:10
标题: 在线的老大来指条明路
desktop.<Window>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量)").setActive();
desktop.<Control>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量).ToolBar1").click(MouseButton.LEFT, new Point(696, 13));
这代码的语法出自哪里?desktop对象后面到底都能跟什么东西?像这类4java的问题我该在哪里找???帮助文件里找来找去没找到这类问题。
作者: 沅芷湘兰    时间: 2014-2-20 17:26
[attach]89255[/attach]
类似图片中的标记,如window等。
作者: rftxrx    时间: 2014-2-21 10:27
回复 2# 沅芷湘兰


   
谢谢版主的回复,之前用过QTP,现在是用Eclipse-4j,我再就目前几个问题请版主大人指导下。
1,还是之前那问题,你的回复我看不懂,再说一下,
desktop.<Window>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量)").setActive();
和QTP相比,我只要加入对象到对象库,在写程序的时候,按上到下很快能写出对象,上面这句代码是由desktop开头,后面跟的.<window>find,find是找对象固定要加的吗?<>里面什么时候用window,什么时候用Control,用PushButton,到底可以有多少种啊,关键是想知道的是这些都是哪方面的知识?哪里可以找到?
2,QTP中只要加入对象库的对象,写程序的时候打第一个字母后面就自动出来对象的全称,Eclipse-4j这个功能怎么用? 还有一个就是在对象库里改变了对象的名称,怎么能同时改变程序里的对象名称?
版主,麻烦你了。。。
作者: 沅芷湘兰    时间: 2014-2-21 11:21
本帖最后由 沅芷湘兰 于 2014-2-21 11:22 编辑


@Test
        public void testCalc01() {
                desktop.<Window>find("/Window[@caption='计算器']").setActive();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='1']").select();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='+']").select();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='2']").select();
                desktop.<PushButton>find("/Window[@caption='计算器']//PushButton[@caption='=']").select();
                desktop.<TextField>find("/Window[@caption='计算器']//TextField").setText("3. ");
        }

类似的代码再结合上面的图片,大概看得懂了吧?看其中的“Window”,“PushButton”,“TextField”,Find后面跟的是你的对象的Xpath路径,这个地方在什么时候出现,是要看你操作什么对象了。
作者: rftxrx    时间: 2014-2-21 12:54
回复 4# 沅芷湘兰

版主再解答下第2个问题吧,习惯了QTP,不能自动填充很难受啊。
desktop.<Window>find("/Window[@caption='计算器']").setActive();
如果手写这句代码,在QTP中自己写个W后面就会出现整个路径Window[@caption='计算器']供选择,现在的软件应该会有这样的功能,可我没找到。
另外一个就是在对象库中改变对象的名称(ITEM NAME)后,库中的对象名称就变成了黄色,程序出错,我的本意是改变对象库中的名称后,相应的程序中的对象名称也跟着改变,而且程序可以正常运行。
作者: 沅芷湘兰    时间: 2014-2-21 13:57
你现在使用的是SilkTest14吗?
据说现在14和15里已经有对象库了,那我想你这个问题应该在后续的版本里已经解决了
作者: rftxrx    时间: 2014-2-21 14:14
回复 6# 沅芷湘兰


    我现在用的是14,从没用过早期的版本,现在用的是有个文件叫OBJECT MAPS,应该就是QTP里面的对象库管理了,可惜没找到上面说的功能啊,不会没有这 功能吧,又不能改名称,又不能自动填充,如果软件的名称很长的话,那要麻烦死了。
作者: 沅芷湘兰    时间: 2014-2-21 14:48
其实这个地方,你都不用考虑太多了,直接用参数化来做,呵呵,框架就这样开始了
作者: rftxrx    时间: 2014-2-21 15:17
回复 8# 沅芷湘兰


            @Test
        public void case1() {
                desktop.<Window>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量)").setActive();
                desktop.<Control>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量).ToolBar1").textClick("操作员管理");
                desktop.<PushButton>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量).错误信息.确定").select();
                desktop.<PushButton>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量).错误信息.确定").select();
                desktop.<PushButton>find("智能水表信息管理系统(客户端004)--高频卡3 1 1 3 -- 射频卡水表(水量计量).错误信息.确定").select();
                desktop.<Control>find("查询操作员窗口 -- 射频卡水表(水量计量).TDBGrid").click(MouseButton.LEFT, new Point(31, 9));
上面是我录制的代码,对象名称基本上占了整个屏幕,如果我要完全手写代码去引用这些对象,多恐怖。如果是您老,该如何下手,参数化太高深,有没有适合初学者的
作者: 沅芷湘兰    时间: 2014-2-21 16:06
建议是直接录制,回放就可以了,相信Silk4J也能做到
作者: rftxrx    时间: 2014-2-21 16:30
回复 10# 沅芷湘兰


    录制不方便维护,一群代码看的头大,,,,我再研究下其他办法看




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