首页 > 代码库 > 学习RFT之:TestObject.find方法的了解与使用

学习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 Script17  * @author lenovo18  */19 public class TestForPlaceAnOrder extends TestForPlaceAnOrderHelper20 {21     /**22      * Script Name   : <b>TestForPlaceAnOrder</b>23      * Generated     : <b>2014-10-18 上午11:41:34</b>24      * Description   : Functional Test Script25      * Original Host : WinNT Version 6.1  Build 7601 (S)26      * 27      * @since  2014/10/1828      * @author lenovo29      */30     public void testMain(Object[] args) 31     {32         // TODO 在此插入代码33     }34     35     //创建一个类(Dialog),抽象出Place an order这个对话框及其内部的控件36     //静态类的方式,可以方便调用37     public static class PlaceAnOrder38     {39         //得到根节点,整个Dialog40         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 Script19  * @author lenovo20  */21 public class TestJavaClassA extends TestJavaClassAHelper22 {23     /**24      * Script Name   : <b>TestJavaClassA</b>25      * Generated     : <b>2014-10-18 上午8:55:31</b>26      * Description   : Functional Test Script27      * Original Host : WinNT Version 6.1  Build 7601 (S)28      * 29      * @since  2014/10/1830      * @author lenovo31      */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 }

 

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