< 上一個課程 | 下一個課程 >

第 8 課:更新物件對映表

在本課中,您會利用物件對映表來修正物件識別警告的問題。您也將利用正規表示式來提高物件識別的彈性。
當您發現識別失敗或警告時,請查看日誌訊息。在第 7 課結束時,您將日誌維持開啟。如果沒有開啟,請在「專案」視圖中按兩下日誌,將它開啟。日誌中還有一則警告。該事件的標題為物件識別太弱(超出警告臨界值)
  1. 查看靠近日誌底端之警告區段中的 ObjectLookedForobjectFound 欄位。

    在 ClassicsA 中,密碼欄位的名稱是 Remember Password,而在 ClassicsB 中,則是 Remember The Password。當您在 ClassicsB 上播放 Script 時,由於這個差異,物件識別無法完全相符。

  2. 查看日誌中的行號欄位。請注意這個行號,然後關閉日誌回到 Functional Tester。
  3. 按一下 Script 視窗中的任意位置,然後按一下導覽 > 移至行
  4. 輸入日誌失效訊息的行號,然後按一下確定

    這時游標會移到該行號的左邊界中。

    註: 您也可以查看 Functional Tester 視窗底端的指示器,來找出行號。例如:"43:9" 表示第 43 行第 9 列。
    您的 Script 中的指令行應該是:
    RememberPassword().clickToState(SELECTED); 
    這個指令行代表您按一下密碼勾選框的動作。Script 中的這一行顯示失敗的物件。現在您可以在物件對映表中尋找該物件。
  5. 如果要尋找物件,請回到「Script 瀏覽器」(右窗格)中的「測試物件」清單。 您應該會看到 rememberPassword 列在測試物件資料夾之下。

檢視物件對映表中的物件識別內容

  1. 按兩下 rememberPassword 物件,在物件對映表中開啟它。
  2. 按一下物件對映表功能表中的測試物件 > 全部接受。如果指令變成灰色,請不要執行任何動作。

    請注意,所有的物件都會變成黑色的文字。在您於對映表中接受這些物件之前,文字將以藍色顯示(代表新物件)。您應該在第一次查看新建的物件對映表時接受物件。

  3. 如果對映表中未選取密碼勾選框物件,請選取它。(這個物件稱為 Java: checkBox: checkRemember: javax.swing.JCheckBox。)
  4. 查看物件對映表底端之識別標籤中所列出的識別內容。

    您可以看到這是來自 ClassicsA 的物件,因為它在 text 內容中顯示 Remember Password。這是「舊」物件。不過,當您對 ClassicsB 播放 Script 時,該物件的文字已變更,因此 Functional Tester 將它視為新的物件。您想在本案例中使用新物件內容,因此您必須將它新增至對映表中。

新增新物件至對映表中

如果要新增物件至對映表中,請開啟 ClassicsB,然後開啟 Member Logon 視窗。
  1. 按一下物件對映表功能表中的應用程式 > 執行
  2. 選取 ClassicsJavaB。(請務必選取 B)。
  3. 按一下確定
  4. 在 ClassicsCD 中,選取任何一片 CD,然後按一下 Place Order

    這時會開啟 Member Logon 視窗。

  5. 如有必要,將物件對映表移到畫面下方,以顯示其完整內容。在物件對映表功能表中,按一下測試物件 > 插入物件

    這與「驗證點精靈」之選取物件頁面中的「物件搜尋器」工具相同。

  6. 清除選取物件之後進入下一頁勾選框(如果已勾選)。
  7. 使用「物件搜尋器」工具來選取 Member Logon 視窗中的 Remember the Password 勾選框。

    勾選這個勾選框之後,您會看到 accessibleContext.accessibleName 內容這時會是 Remember The Password。如有必要,請拉大物件對映表的邊框來查看其內容。

  8. 在「選取物件」頁面中,按下一步
  9. 不要變更「選取物件選項」頁面中的任何內容,然後按一下完成

    此時新的勾選框物件就會顯示在物件對映表中。

  10. 按一下另一個物件,並注意新的項目會以藍色列出,且該行的開頭會顯示 "New" 這個字。

    現在,對映表中已同時列出舊物件和新物件。您想統一這兩個物件,並從每個物件中取得您想用於新物件的內容。

統一物件

  1. 如果要統一物件,請按一下舊物件(標籤為 CheckBox: checkRemember 的原始勾選框),然後將它拖到清單中的新物件。將游標箭頭的尖端放在新物件上,然後放開滑鼠按鈕。接著放開滑鼠按鈕。

    這時會開啟「統一測試物件」精靈。

  2. 如有必要,請放寬「統一」精靈,以查看下方區段中的更多資訊。

    原始物件的內容顯示在左下角區段中。它的標籤應該是 "Source: RememberPassword"。這就是 ClassicsA 中勾選框上顯示的文字。在右下角區段中,它的標籤應該是 "Target: RememberThePassword",也就是 ClassicsB 中勾選框上顯示的文字。

    因為您已將舊物件拖曳到新物件中,所以新物件的識別內容會填入精靈的頂端位置。一般而言,如果新內容是偏好的內容,Functional Tester 會將它們放在最上方。不過,部分舊的管理內容可能為偏好選項。比方說,Functional Tester 會保留舊內容集中的正規表示式。如果要使用舊物件中的內容,請在舊物件的方格中按兩下該內容,將它複製到統一物件中。在本案例中,我們想要使用新物件的所有內容,而這些內容已經填寫完成。

  3. 下一步

    這時會列出受物件對映表中這項變更影響的所有 Script。只有一個 Script 受到影響,就是 Classics。

  4. 按一下完成
  5. 在物件對映表中,按一下物件對映表工具列中的檔案 > 儲存功能表,來儲存您所做的變更,然後關閉物件對映表。

再次播放 Script

現在我們將在 ClassicsB 上再播放一次 Script,以確認它是否可通過測試。
  1. 關閉 ClassicsCD 的兩個對話框。
  2. 在 Functional Tester 中,按一下工具列中的執行功能測試 Script
  3. 選取 Classics 日誌,然後按一下完成

    現在 Script 會通過測試,而不會顯示任何警告訊息!請注意,由於識別內容現在已經相符,因此播放作業在密碼勾選框物件上不會有暫停的現象。

    這個物件統一功能提供了一種方式,使您可以在刻意變更物件的識別內容時,輕鬆更新 Script。這項功能的主要優點之一就是,如果有許多 Script 正在使用您的物件對映表,當您在精靈中進行變更時,您可以將它們全部更新。您不需要手動編輯多個 Script,您只需要在對映表中執行一次變更,它就會自動傳送到使用它的所有 Script 中。這項功能可以節省您的時間。

    還有一種更簡單的方法可以在測試物件的識別內容變更時,更新這些內容。除了使用本練習說明的「統一」精靈以外,您還可以從「物件對映表」選取要更新識別內容的測試物件。請用滑鼠右鍵按一下顯示在「物件對映表」樹狀結構中的測試物件,然後從蹦現功能表中選取更新識別內容。您需要在執行這個動作時同時執行測試應用程式,Functional Tester 才能取得更新後的識別內容。只有在您不想使用舊物件的任何內容時,您才能使用這種更新方法。
  4. 關閉日誌。
< 上一個課程 | 下一個課程 >

意見