- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RFT API学习之——TestObject
RFT API学习之——TestObject
来源:?浪潮软件评测实验室?作者:黄启庆? 发表日期:?2009-9-28 16:43:06?阅读次数:?1587?
类的声明——
public class TestObject?extends java.lang.Object TestObject做为一个“祖宗”级别的类,它所提供的方法很多,功能也很强大,本文就开发测试脚本中常用到的几个方法做一个介绍。
方法一
public boolean exists() 被测对象调用该方法后,RFT自动在当前窗口中进行查找,如果找到匹配对象则返回true,否则返回false,如果找到多个匹配的候选值,同样返回true。该方法一旦执行,便在当前窗口进行匹配查找,即使找不到,也不会等待该对象的出现,也不会抛出任何异常信息。比如在启动LoushangStudio的时候,我们编写如下测试脚本。
// 启动LoushangStudio
startApp(start);
?//判断对象loushangLoushangPlatform()在当前窗口中是否存在。
System.out.println(loushangLoushangPlatform().exists());
?//waitForExistence(100.0, 1.0),等待被测对象出现,最长等待时间100秒,每秒钟
//尝试一次,如果找到 loushangLoushangPlatform() 对象,则继续往下执行。
loushangLoushangPlatform().waitForExistence(100.0, 1.0);
?//判断对象loushangLoushangPlatform()在当前窗口中是否存在。
System.out.println(loushangLoushangPlatform().exists());
执行完这段脚本后,我们会在控制台看到这样的信息——
说明:在第一次调用exists()方法时,LoushangStudio还没有起来,所以返回false,当第二次调用该方法的时候,由于前面已经调用了waitForExistence()方法,阻止当前脚本的继续执行,直到loushangLoushangPlatform对象出现,所以返回true。
方法二
public TestObject[] find(Subitem properties) find方法可以实现在运行时,动态地在被测应用程序(application under test,AUT)中定位 TestObject,通过使用它,您可以避免不得不记录动作以向对象地图(Object Map)中添加 TestObject 对象。
在RFT中,被映射的对象使用被存储的、静态的、识别属性和对象层次来验证回放过程中脚本是否使用了正确的控件。虽然使用被记录的对象进行对象识别速度很快,但是更新属性却是费时的,特别是当您需要将对象的属性权值,或者文本属性变更为正则表达式(regular expression,Regex)值时。find 方法向您提供一种能够排除大多数来自于对象地图的被记录控件的选项。
find 方法在 RFT 的当前版本(8.0)中已经非常成熟,其性能几乎与使用映射对象的性能相同。该方法可以根据指定的查询条件,搜索所有匹配的对象,并将搜索到的结果放入TestObject[]数组中返回。其中查询条件的设置通常有以下三种格式:
1、 atChild 搜索 TestObject 所有直接的子对象。
2、 atDescendant 寻找 TestObject 的所有子对象。
3、 atList 让您指定一个 atChild、atDescendant,和 atProperty 对象的列表,这样可以进一步减小搜索的范围,提高搜索效率和准确性。
前面我们提到过:“每一个被测软件上的对象都可以映射为 RFT 上的一个 TestObject 对象。”,也就是说,TestObject是所有被测试对象的父类,所以我们可以用任何一个被测对象来调用 find方法。这依赖于所选择的对象,搜索只限于您所选择的对象下面层级的对象。比如,在LoushangStudio中,新建模型视图时(如图1所示),
图1-新建模型视图
需要输入文件名称(File name),然后点击【Finish】按钮,这两个动作虽然都可以通过录制脚本来实现,但是鉴于静态识别存在的固有的缺陷,此处我们使用find方法来动态查找,并执行相应的动作。首先,我们可以借助于RFT提供的对象查找器来获取各对象的识别属性。
图2-新建模型视图窗口对象识别属性
图3-文件名输入域对象识别属性
图4-Finish按钮对象识别
文档评论(0)