您现在的对象地图(Object Map)中应该有一个 javax.swing.JFrame 对象。选择 JFrame 控件,以便您可以看到对话框的 Recognition 属性。对于此控件,标签或文本是定义该控件的最重要的两个属性。第二重要的属性是控件的类,因为可能会显示出许多 JFrame 对象,但是可能只有一个的标签为 Place an Order。继续以下步骤:
- 展卡层次结构,找到按钮标签。
- 选择 Cancel 按钮,以便您可以分析 RFT 用来在对象地图(Object Map)中描述按钮的 Recognition 属性。这里列出了四个属性,其中两个对定义正确的按钮是至关重要的:class 和 accessibleContext.accessibleName 属性(参见图 2)。
图 2. 使用 ClassicsJavaA 应用程序的对象地图(Object Map)的实例
- 找到正确的按钮。许多对话框中包含一个 Cancel 按钮,所以您首先需要找到包含正确的 Cancel 按钮的对话框 TestObject。如果您首先找到了正确的对话框,那么找到对话框中正确的按钮就更容易了。
- 回到您的空测试脚本中。因为对话框是高级对象,所以您可以通过定义 RootTestObject 来开始 TestObject 搜索。当您做完这些后,您就可以使用
find
方法来定位对话框 TestObject:
RootTestObject root = getRootTestObject();
您已准备好使用 find 方法来定位 Place an Order 对话框,利用窗口的类信息。
注意:确保打印出您找到的所有 TestObject 的属性,这样您可以检查它们。
您的命令应类似以下内容:
// get all test objects of type JFrame (dialog) TestObject[] to = root. find(atDescendant("class", "javax.swing.JFrame")); // print dialog test object properties to console for (int i = 0; i < to.length; i++) { System.out.println (to[i].getProperties()); } |
结果显示应该类似以下内容(除去了大部分属性,为了节省空间):
{height=600, displayable=true, undecorated=false, ..., class=javax.swing.JFrame, title=Place an Order, …} |
接下来,使用 find 方法代替上面的代码,利用对话框中该窗口的标签文本来定位 Place an Order 对话框:
// get all test objects that have the title "Place an Order" TestObject[] to = root. find(atDescendant("title", "Place an Order")); // print test object properties to console for (int i = 0; i < to.length; i++) { System.out.println(to[i].getProperties()); } |