練習 1.8:更新物件對映表

開始之前,您必須先完成練習 1.7:使用比較程式來更新驗證點

在本練習中,您將利用物件對映表來修正物件識別警告的問題。您也將利用正規表示式來提高物件識別的彈性。

當您發現識別失敗或警告時,請查看日誌訊息。在練習 1.7 結束時,您應該已經讓日誌保持開啟。如果沒有開啟,請在「專案」視圖中按兩下日誌,將它開啟。日誌中還有一個個別的警告。事件標題為「物件識別太弱(超出警告臨界值)」。
  1. 查看靠近日誌底端之警告區段中的 ObjectLookedForobjectFound 欄位。

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

  1. 查看日誌中的 Line Number 欄位,並記下行號。
  2. 關閉日誌並回到功能測試中。
  3. 按一下 Script 視窗中的任意位置,然後按一下導覽 > 移至行
  4. 輸入日誌失效訊息中的行號,然後按一下確定

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

  5. 您也可以查看「功能測試」視窗底端的指示器,以找出行號。指令行內的行號和游標位置會顯示在這裡。例如,"43:9" 代表第 43 行中距離左邊界 9 個字元的位置。您的 Script 中的指令行應該是:

    RememberPassword().clickToState(SELECTED);

    這個指令行代表您按一下密碼勾選框的動作。Script 中的這一行顯示失敗的物件。現在您可以在物件對映表中尋找該物件。

  1. 如果要尋找物件,請回到 Script 瀏覽器(右窗格)中的測試物件清單。

您應該會看到 "rememberPassword" 列示在測試物件資料夾之下。

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

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

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

您可以看到這是來自 ClassicsA 的物件,因為它在 accessibleContext.accessibleName 內容中顯示的是 "Remember Password"。這是「舊」物件。不過,當您在 ClassicsB 上重播 Script 時,該物件的文字已經變更,因此功能測試會將它視為「新」物件。您想在本案例中使用新物件內容,因此您必須將它新增至對映表中。

如果要將新物件新增至對映表,請開啟 ClassicsB 和成員登入對話框。
  1. 按一下物件對映表功能表上的應用程式 > 執行
  2. 使用箭頭選取 ClassicsJavaB。(請務必選擇 B。)
  3. 按一下確定
  4. 在 ClassicsCD 中,選取任何 CD,然後按一下訂購

這時會開啟「成員登入」對話框。

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

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

  1. 如果已經選取「進入下一頁」選項,請將它清除。
  2. 使用「物件搜尋器」工具來選取「成員登入」對話框中的「記住密碼」勾選框。

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

  1. 選取物件頁面上,按下一步
  2. 不要在選取物件選項頁面上做任何變更,然後按一下完成
此時新的勾選框物件就會顯示在物件對映表中。
  1. 按一下另一個物件;請注意,新項目會顯示成藍色,而且行的開頭會出現 "New" 這個字。

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

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

這時會出現統一測試物件精靈。

  1. 如有必要,請放寬統一精靈,以查看下方區段中的更多資訊。
  2. 原始物件的內容顯示在左下角區段中。它的標籤應該是 "Source: RememberPassword"。這就是 ClassicsA 中勾選框上顯示的文字。在右下角區段中,它的標籤應該是 "Target: RememberThePassword",也就是 ClassicsB 中勾選框上顯示的文字。

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

  3. 下一步

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

  1. 按一下完成
  2. 在物件對映表中,按一下物件對映表工具列上的檔案:儲存按鈕,儲存您所做的變更,然後關閉物件對映表。
現在我們將在 ClassicsB 上再重播一次 Script,以確認它是否可通過測試。
  1. 先關閉 ClassicsCD 的兩個對話框。
  2. 在功能測試中,按一下工具列上的執行功能測試 Script
  3. 選取 Classics 日誌,然後按一下完成
  4. 現在 Script 會通過測試,而不會顯示任何警告訊息!請注意,由於識別內容現在已經相符,因此重播作業在密碼勾選框物件上不會有暫停的現象。

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

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

  5. 關閉日誌。

現在您已準備就緒,可以開始執行練習 1.9:變更識別喜好設定

使用條款 | 意見
(C) Copyright IBM Corporation 2002, 2004. All Rights Reserved.