第一部分:了解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 }