首页 >> 大全

RFT API学习之——TestObject

2023-08-27 大全 24 作者:考证青年

.lang.

做为一个“祖宗”级别的类,它所提供的方法很多,功能也很强大,本文就开发测试脚本中常用到的几个方法做一个介绍。

方法一

()

被测对象调用该方法后,RFT自动在当前窗口中进行查找,如果找到匹配对象则返回true,否则返回false,如果找到多个匹配的候选值,同样返回true。该方法一旦执行,便在当前窗口进行匹配查找,即使找不到,也不会等待该对象的出现,也不会抛出任何异常信息。比如在启动的时候,我们编写如下测试脚本。

//启动

("start");

//判断对象form()在当前窗口中是否存在。

.out.(form().());

//(100.0,1.0),等待被测对象出现,最长等待时间100秒,每秒钟

//尝试一次,如果找到form()对象,则继续往下执行。

form().(100.0,1.0);

//判断对象form()在当前窗口中是否存在。

.out.(form().());

执行完这段脚本后,我们会在控制台看到这样的信息——

说明:在第一次调用()方法时,还没有起来,所以返回false,当第二次调用该方法的时候,由于前面已经调用了()方法,阻止当前脚本的继续执行,直到form对象出现,所以返回true。

方法二

[]find()

find方法可以实现在运行时,动态地在被测应用程序(,AUT)中定位,通过使用它,您可以避免不得不记录动作以向对象地图()中添加对象。

在RFT中,被映射的对象使用被存储的、静态的、识别属性和对象层次来验证回放过程中脚本是否使用了正确的控件。虽然使用被记录的对象进行对象识别速度很快,但是更新属性却是费时的,特别是当您需要将对象的属性权值,或者文本属性变更为正则表达式(,Regex)值时。find方法向您提供一种能够排除大多数来自于对象地图的被记录控件的选项。

find方法在RFT的当前版本(8.0)中已经非常成熟,其性能几乎与使用映射对象的性能相同。该方法可以根据指定的查询条件,搜索所有匹配的对象,并将搜索到的结果放入[]数组中返回。其中查询条件的设置通常有以下三种格式:

1、搜索所有直接的子对象。

2、寻找的所有子对象。

3、让您指定一个、,和对象的列表,这样可以进一步减小搜索的范围,提高搜索效率和准确性。

前面我们提到过:“每一个被测软件上的对象都可以映射为RFT上的一个对象。”,也就是说,是所有被测试对象的父类,所以我们可以用任何一个被测对象来调用find方法。这依赖于所选择的对象,搜索只限于您所选择的对象下面层级的对象。比如,在中,新建模型视图时(如图1所示),

图1-新建模型视图

需要输入文件名称(),然后点击【】按钮,这两个动作虽然都可以通过录制脚本来实现,但是鉴于静态识别存在的固有的缺陷,此处我们使用find方法来动态查找,并执行相应的动作。首先,我们可以借助于RFT提供的对象查找器来获取各对象的识别属性。

图2-新建模型视图窗口对象识别属性

图3-文件名输入域对象识别属性

图4-按钮对象识别属性

获取到各对象的信息后,下面我们就可以利用这些属性信息动态的进行对象的识别了(说明:每一个测试对象都包含有若干个识别属性,在实际使用时,我们要学会取舍,在识别时,只使用该对象特有的属性,比如要查找“新建模型视图”窗口,我们在find方法中,只需提供“.”属性值即可。)。

要想快速准确的查找到“文件名输入域”和“按钮”,我们需要先找到其父对象,然后,再用父对象调用find方法进行查找。(说明:此处我们也可以不通过父对象,直接查找“文件名输入域”和“按钮”,但是,这样的话,我们就不能保证结果的唯一性,也就是说,如果在其他窗口也存在这两个对象的话,我们就不好区分哪一个是我们需要的,所以,为了严谨起见,我们通过父对象查找子对象的方式来进行,在实际编写测试脚本时,可以根据具体情况分别对待。)

//获取顶层窗口对象

=.();

//通过顶层窗口对象调用find方法,查找“新建模型视图”窗口对象。

[]to=root.find((".","新建模型视图"));

//通过“新建模型视图”窗口对象调用find方法,查找“文件名输入域”对象

[]=to[0].find((".class","org..swt..Text",".",":"));

//根据找到的对象,创建一个新的对象,然后调用

//对象的方法,向输入域中添加信息。

_学习通_学习计划

ect([0]).("");

//通过“新建模型视图”窗口对象调用find方法,查找“按钮”对象[]=to[0].find(("text","&"));

//根据找到的对象,创建一个新的对象,然后调用

//对象的click方法,执行单击操作。

([0]).click();

在上面的例子中,我们使用了find方法最常用的一种使用方法,find(()),有时在多属性下,为了减小搜索的范围,提高搜索效率,我们还会用到find(())这种列表形式,比如:

[]=root.find((("text","&",".","0"),(".class","org..swt..")));

总之,find的使用可以有效的增强测试脚本的健壮性和易维护性,其功能也是相当强大的,在实际使用中应该加以灵活的应用。

方法三

[]()

该方法将以数组的形式返回被测对象的所有直接孩子对象,所过被测对象没有子对象,则返回的数组的长度为0.

比如,在测试的导出数据结构文档时,由于RFT对象查找器不能识别“另存为”对话框,这时,我们需要手动编写测试代码来实现,便会用到该方法,如下:

//根据传入的窗口对象和子对象属性查找并返回子对象,如果查找不到,则返回null。

rol(,){

if(==null){

.out.("传入的父对象为空");

;

//()方法返回该对象的所有子对象的数组。

[]=.();

=null;

=.;

//遍历孩子对象数组,注意查看是否与给定属性值匹配,如果匹配则返回该对象。

for(inti=0;i

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了