處理不明確的識別

在重播期間,Functional Tester 在某些情況下可能無法在測試中的軟體內區分兩個相似的物件。這個主題說明如何處理這種情況。

例如,在 HTML 應用程式中,當有多個瀏覽器實例在作用中時,如果記錄的結果如下,則無法在工具列動作上分辨兩個不同的瀏覽器:

BrowserToolbar_Back().click()
BrowserToolbar_Forward().click()

在這種情況下,為了避免不明確的識別,Functional Tester 會在瀏覽器中找出依目前載入的文件來表示的工具列按鈕(稱為目標物件的錨點)。例如:

BrowserToolbar_Back(Browser_htmlBrowser(Document_MyHomePage(),
  DEFAULT), DEFAULT).click();

工具列返回按鈕由瀏覽器固定,而瀏覽器會顯示文件 "My HomePage"。如果瀏覽器的每一個實例載入相同的文件,則這個範例當然不會成功。請注意,以錨點為引數的 Helper Script 方法也需要另一個引數來指定元件的狀態(上述範例的 DEFAULT 引數)。HTML 物件的預設狀態是 LOADED。HTML 元件也可能有 LOADING 和 UNINITIATED 狀態。Java™ 物件的預設狀態是 SHOWING 和 ENABLED。Java 物件的其他支援的狀態旗標還有 NOT_SHOWING 和 DISABLED。

此外,您可以利用 TestObject 參照來分辨瀏覽器實例, 在瀏覽器上呼叫 find 方法(請記得在完成時取消登錄 TestObject),如下所示:

TestObject browserOne = Browser_htmlBrowser(Document_MyHomePage(),
  DEFAULT).find();

測試 Script 中的瀏覽器工具列指令如下列範例所示:

BrowserToolbar_Back(myBrowser, DEFAULT).click();

當一項測試有多個應用程式同時執行時,也會發生不明確的識別的情況。在重播期間,像是 b5().click() 這種指令就很不明確的。因為 startApp 指令會傳回 ProcessTestObject, 這個參照可用來指定哪一個應用程式可套用特定的指令。例如:

ProcessTestObject p1 = startApp("SwingTest");
ProcessTestObject p2 = startApp("TryIt");
...
//b5().click(); 重播時不明確的不清;哪一個應用程式?

b5(p1, DEFAULT).click();

在範例的最後一行,以 ProcessTestObject 為錨點來尋找所需的應用程式。請注意,不一定要呼叫 ProcessTestObject 的取消登錄方法。


意見
(C) Copyright IBM Corporation 2000, 2007. All Rights Reserved.