学习RFT之:TestObject.find方法的了解与使用

第一部分:了解TestObject.find

  一、TestObject.find方法的作用

    1、测试过程中动态的找到测试对象(控件、标签等),使我们的测试用例不再依赖RFT自带的对象地图(Object Map)。

    2、脱离了对对象地图的依赖也就不再需要重复的对UI等变更的修改对象地图过程了。

  二、find方法的使用说明

    1、Find方法是TestObject类继承RootTestObject的一个方法,并重写了多种实现方式。

     在下面的实例中,代码使用 atDescendant 来定位按钮。然而,您可以有许多方式来使用 find

    •   atChild 搜索 TestObject 所有直接的子对象。
    •   atDescendant 寻找 TestObject 的所有子对象。
    •   atList 让您指定一个 atChild、atDescendant,和 atProperty 对象的列表,这样您可以减小搜索范围。

第二部分:利用find方法实践(测试RFT自带的JAVA小软件)

  一、打开自动的JAVA小程序:

    找到“配置”--》“配置应用程序进行测试...”--》,进入下图界面:点击“运行”

     

  二、查看控件属性,为find作准备。

    打开要测试的应用程序后,通过RFT主界面左边的“专用测试对象图”——》抓取功能,查看界面上每个元素的各种属性。把需要的控件属性全查询出来。

    

  

  

三、新建一个类,抽象出整个Dialog及其控件(这里只加入了Cancel按钮)

  

 1 package baidu;
 2 import resources.baidu.TestForPlaceAnOrderHelper;
 3 import com.rational.test.ft.*;
 4 import com.rational.test.ft.object.interfaces.*;
 5 import com.rational.test.ft.object.interfaces.SAP.*;
 6 import com.rational.test.ft.object.interfaces.WPF.*;
 7 import com.rational.test.ft.object.interfaces.dojo.*;
 8 import com.rational.test.ft.object.interfaces.siebel.*;
 9 import com.rational.test.ft.object.interfaces.flex.*;
10 import com.rational.test.ft.object.interfaces.generichtmlsubdomain.*;
11 import com.rational.test.ft.script.*;
12 import com.rational.test.ft.value.*;
13 import com.rational.test.ft.vp.*;
14 import com.ibm.rational.test.ft.object.interfaces.sapwebportal.*;
15 /**
16  * Description   : Functional Test Script
17  * @author lenovo
18  */
19 public class TestForPlaceAnOrder extends TestForPlaceAnOrderHelper
20 {
21     /**
22      * Script Name   : <b>TestForPlaceAnOrder</b>
23      * Generated     : <b>2014-10-18 上午11:41:34</b>
24      * Description   : Functional Test Script
25      * Original Host : WinNT Version 6.1  Build 7601 (S)
26      *
27      * @since  2014/10/18
28      * @author lenovo
29      */
30     public void testMain(Object[] args)
31     {
32         // TODO 在此插入代码
33     }
34
35     //创建一个类(Dialog),抽象出Place an order这个对话框及其内部的控件
36     //静态类的方式,可以方便调用
37     public static class PlaceAnOrder
38     {
39         //得到根节点,整个Dialog
40         public static GuiTestObject getDialog()
41         {
42             RootTestObject root = getRootTestObject();
43             TestObject[] to = root.find(atDescendant("class", "javax.swing.JFrame", "title", "Place an Order"));
44             return new GuiTestObject(to[0]);
45         }
46         //得到Cancel按钮
47         public static GuiTestObject getBtnCancel()
48         {
49             TestObject to = getDialog();
50             //这里使用了强制类型转换的方式
51             TestObject[] btnCancel = to.find(atDescendant("class", "javax.swing.JButton", "text", "Cancel"));
52             return new GuiTestObject(btnCancel[0]);
53         }
54
55     }
56
57
58 }

    再新建一个测试用例:(动作:取消订单)

 1 package baidu;
 2 import resources.baidu.TestJavaClassAHelper;
 3 import baidu.TestForPlaceAnOrder.PlaceAnOrder;
 4
 5 import com.rational.test.ft.*;
 6 import com.rational.test.ft.object.interfaces.*;
 7 import com.rational.test.ft.object.interfaces.SAP.*;
 8 import com.rational.test.ft.object.interfaces.WPF.*;
 9 import com.rational.test.ft.object.interfaces.dojo.*;
10 import com.rational.test.ft.object.interfaces.siebel.*;
11 import com.rational.test.ft.object.interfaces.flex.*;
12 import com.rational.test.ft.object.interfaces.generichtmlsubdomain.*;
13 import com.rational.test.ft.script.*;
14 import com.rational.test.ft.value.*;
15 import com.rational.test.ft.vp.*;
16 import com.ibm.rational.test.ft.object.interfaces.sapwebportal.*;
17 /**
18  * Description   : Functional Test Script
19  * @author lenovo
20  */
21 public class TestJavaClassA extends TestJavaClassAHelper
22 {
23     /**
24      * Script Name   : <b>TestJavaClassA</b>
25      * Generated     : <b>2014-10-18 上午8:55:31</b>
26      * Description   : Functional Test Script
27      * Original Host : WinNT Version 6.1  Build 7601 (S)
28      *
29      * @since  2014/10/18
30      * @author lenovo
31      */
32     public void testMain(Object[] args)
33     {
34         TestObject to = PlaceAnOrder.getDialog();
35
36         GuiTestObject btnCancel = PlaceAnOrder.getBtnCancel();
37
38         btnCancel.click();
39     }
40
41 }
时间: 2024-08-28 23:53:55

学习RFT之:TestObject.find方法的了解与使用的相关文章

jQuery学习笔记--JqGrid相关操作 方法列表(上)

1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选中行:$("#jqGrid

uboot学习之二----主Makefile学习之四----两种编译方法:原地编译和单独输出文件夹编译

第57-123行: 57 # 58 # U-boot build supports producing a object files to the separate external 59 # directory. Two use cases are supported: 60 # 61 # 1) Add O= to the make command line 62 # 'make O=/tmp/build all' 63 # 64 # 2) Set environement variable

《Python基础教程(第二版)》学习笔记 -&gt; 第九章 魔法方法、属性和迭代器

准备工作 >>> class NewStyle(object): more_code_here >>> class OldStyle: more_code_here 在这两个类中,NewStyle是新式的类,OldStyle是旧式的类,如果文件以__metaclass__ = type 开始,那么两个类都是新式类. 构造方法 构造方法,当一个对象被创建后,会立即调用构造方法.Python中创建一个构造方法,只要把init方法的名字从简单的init修改成__init__

ios网络学习------2 用非代理方法实现异步post请求

#pragma mark - 这是私有方法,尽量不要再方法中直接使用属性,因为一般来说属性都是和界面关联的,我们可以通过参数的方式来使用属性 #pragma mark post登录方法 -(void)loginWithPostWithName:(NSString *)userName pwd:(NSString *)pwd { //1确定地址NSURL NSString *urlString = [NSString stringWithFormat:@"www.baidu.com"];

深度学习、自然语言处理和表征方法

简介 过去几年,深度神经网络在模式识别中占绝对主流.它们在许多计算机视觉任务中完爆之前的顶尖算法.在语音识别上也有这个趋势了. 虽然结果好,我们也必须思考……它们为什么这么好使? 在这篇文章里,我综述一下在自然语言处理(NLP)上应用深度神经网络得到的一些效果极其显著的成果.我希望能提供一个能解释为何深度神经网络好用的理由.我认为这是个非常简练而优美的视角. 单隐层神经网络 单隐层神经网络有一个普适性(universality):给予足够的隐结点,它可以估算任何函数.这是一个经常被引用的理论,它

python基础教程_学习笔记11:魔法方法、属性和迭代器

魔法方法.属性和迭代器 在python中,有的名称会在前面和后面各加上两个下划线,这种写法很特别.它表示名字有特殊含义,所以绝不要在自己的程序中使用这种名字.在python中,由这些名字组成的集合所包含的方法叫做魔法(或称特殊)方法.如果对象实现了这些方法中的某一个,那么这个方法会在特殊的情况下被python调用,而几乎没有直接调用它们的必要. 准备工作 为了确保类是新型的,应该把赋值语句__metaclass__=type放在你的模块的最开始,或者(直接或间接)子类化内建类(实际上是类型)ob

Spring4.0MVC学习资料,Controller中的方法详解和使用(四)

在以前,mvc的框架,基本上就是struts框架了.但是现在不一样了.springmvc出来了.spring的mvc框架不亚于struts了,springmvc出来了,我们有了更多的选择. Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 We

Spring4.0MVC学习资料,ApplicationContext中的方法详解(三)

做为java开源的一部分,spring框架一直排在老大的位置.Spring4.0 是 Spring 推出的一个重大版本升级,进一步加强了 Spring 作为 Java 领域第一开源平台的地位.Spring4.0 引入了众多 Java 开发者期盼的新特性,如泛型依赖注入.SpEL.校验及格式化框架.Rest风格的 WEB 编程模型等.这些新功能实用性强.易用性高,可大幅降低 JavaEE 开发的难度,同时有效提升应用开发的优雅性.为了方便开发,Spring的ApplicationContext类,

学习总结--数学.基本计数方法

学习总结--数学.基本计数方法 一.计数方法的原理 1.加法原理:做一件事情有n中办法,第i种办法有pi种执行方案,那么总的解决这件事情的方案数即为p1+p2+p3+...+pn. 2.乘法原理:做一件事情分为n个步骤,第i个步骤的执行方案有pi种,则一共有p1?p2?p3?...?pn种方案解决该问题. 3.容斥原理:一个班级有,集合A的人喜欢数学,集合B的人喜欢英语,结合C的人喜欢语文,那么该班级的人数应该是多少? 如果我们将三个集合的人数相加起来,那么就重复计算了既喜欢数学又喜欢英语的.既