学习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 }

 

posted @ 2014-10-19 12:39  MrCandy  阅读(773)  评论(1编辑  收藏  举报