欢迎来到天天文库
浏览记录
ID:40564319
大小:263.00 KB
页数:10页
时间:2019-08-04
《RFT API学习之——TestObject》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、RFTAPI学习之——TestObject来源: 浪潮软件评测实验室 作者:黄启庆 发表日期: 2009-9-2816:43:06 阅读次数: 1587 RFT在进行对象识别时,每一个被测软件上的对象都可以映射为RFT上的一个TestObject对象,也就是说,假如RFT所识别的测试对象组成一棵树的话,那么TestObject便是这棵树的“根”,所有的被测对象都从这个根部汲取“营养”,即,所有的被测对象都默认继承自类TestObject,并拥有TestObject类中的所有非私有(非private)的方法。我们要基于RFT来
2、开发测试脚本,这个类,我们不能不先熟悉一下。类的声明——publicclassTestObject extendsjava.lang.ObjectTestObject做为一个“祖宗”级别的类,它所提供的方法很多,功能也很强大,本文就开发测试脚本中常用到的几个方法做一个介绍。方法一publicbooleanexists()被测对象调用该方法后,RFT自动在当前窗口中进行查找,如果找到匹配对象则返回true,否则返回false,如果找到多个匹配的候选值,同样返回true。该方法一旦执行,便在当前窗口进行匹配查找,即使找不到,也不
3、会等待该对象的出现,也不会抛出任何异常信息。比如在启动LoushangStudio的时候,我们编写如下测试脚本。//启动LoushangStudiostartApp("start"); //判断对象loushangLoushangPlatform()在当前窗口中是否存在。System.out.println(loushangLoushangPlatform().exists()); //waitForExistence(100.0,1.0),等待被测对象出现,最长等待时间100秒,每秒钟//尝试一次,如果找到loushang
4、LoushangPlatform()对象,则继续往下执行。loushangLoushangPlatform().waitForExistence(100.0,1.0); //判断对象loushangLoushangPlatform()在当前窗口中是否存在。System.out.println(loushangLoushangPlatform().exists());执行完这段脚本后,我们会在控制台看到这样的信息——说明:在第一次调用exists()方法时,LoushangStudio还没有起来,所以返回false,当第二次调
5、用该方法的时候,由于前面已经调用了waitForExistence()方法,阻止当前脚本的继续执行,直到loushangLoushangPlatform对象出现,所以返回true。方法二publicTestObject[]find(Subitemproperties)find方法可以实现在运行时,动态地在被测应用程序(applicationundertest,AUT)中定位TestObject,通过使用它,您可以避免不得不记录动作以向对象地图(ObjectMap)中添加TestObject对象。在RFT中,被映射的对象使用被
6、存储的、静态的、识别属性和对象层次来验证回放过程中脚本是否使用了正确的控件。虽然使用被记录的对象进行对象识别速度很快,但是更新属性却是费时的,特别是当您需要将对象的属性权值,或者文本属性变更为正则表达式(regularexpression,Regex)值时。find方法向您提供一种能够排除大多数来自于对象地图的被记录控件的选项。find方法在RFT的当前版本(8.0)中已经非常成熟,其性能几乎与使用映射对象的性能相同。该方法可以根据指定的查询条件,搜索所有匹配的对象,并将搜索到的结果放入TestObject[]数组中返回。其
7、中查询条件的设置通常有以下三种格式:1、atChild搜索TestObject所有直接的子对象。2、atDescendant寻找TestObject的所有子对象。3、atList让您指定一个atChild、atDescendant,和atProperty对象的列表,这样可以进一步减小搜索的范围,提高搜索效率和准确性。前面我们提到过:“每一个被测软件上的对象都可以映射为RFT上的一个TestObject对象。”,也就是说,TestObject是所有被测试对象的父类,所以我们可以用任何一个被测对象来调用find方法。这依赖于所选
8、择的对象,搜索只限于您所选择的对象下面层级的对象。比如,在LoushangStudio中,新建模型视图时(如图1所示),图1-新建模型视图需要输入文件名称(Filename),然后点击【Finish】按钮,这两个动作虽然都可以通过录制脚本来实现,但是鉴于静态识别存在的固有的缺陷,此处我们使
此文档下载收益归作者所有