您現在的對象地圖(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()); } |