Bei der Wiedergabe können Situationen auftreten, in denen Functional Tester zwei ähnliche Objekte in der getesteten Software nicht voneinander unterscheiden kann. In diesem Abschnitt wird beschrieben, wie in solchen Situationen zu verfahren ist.
Sind beispielsweise in HTML-Anwendungen mehrere Instanzen eines Browsers aktiv, ist bei Symbolleistenaktionen die Unterscheidung zwischen den verschiedenen Browsern nicht möglich, wenn wie in den folgenden Beispielen aufgezeichnet wurde:
BrowserToolbar_Back().click() BrowserToolbar_Forward().click()
In solchen Fällen verhindert Functional Tester eine mehrdeutige Objekterkennung, indem die Symbolleistenschaltfläche in dem Browser lokalisiert wird, der durch das derzeit geladene Dokument angegeben ist (auch als Anker für das Zielobjekt bezeichnet). Beispiel:
BrowserToolbar_Back(Browser_htmlBrowser(Document_MyHomePage(), DEFAULT), DEFAULT).click();
Die Schaltfläche "Zurück" in der Symbolleiste ist durch den Browser verankert, der wiederum durch das Dokument "My HomePage" verankert ist. Dieses Beispiel funktioniert allerdings nicht, wenn in jeder Instanz des Browsers dasselbe Dokument geladen ist. In Helper-Scriptmethoden, die einen Anker als Argument verwenden, wird daher ein weiteres Argument benötigt, mit dem der Status der Komponenten (im oben genannten Beispiel das Argument DEFAULT) angegeben wird. Der Standardstatus für HTML-Objekte ist LOADED. Im Falle von HTML-Komponenten sind auch LOADING und UNINITIATED möglich. Der Standardstatus für Java-Objekte ist SHOWING und ENABLED. Weitere unterstützte Statusattribute für Java-Objekte sind NOT_SHOWING und DISABLED.
Darüber hinaus können Sie die Browserinstanz angeben, indem Sie eine TestObject-Referenz verwenden, die die Suchmethode im Browser auf folgende Weise aufruft (denken Sie daran, die Registrierung für TestObject anschließend wieder zurücknehmen):
TestObject browserOne = Browser_htmlBrowser(Document_MyHomePage(), DEFAULT).find();
Die Symbolleistenbefehle des Browsers im Testscript entsprechen dem folgenden Beispiel:
BrowserToolbar_Back(myBrowser, DEFAULT).click();
Eine weitere Situation, in der eine mehrdeutige Objekterkennung ein Problem darstellen kann, ist dann gegeben, wenn bei einem Test mehrere Anwendungen gleichzeitig aktiv sind. Während der Wiedergabe sind Befehle wie b5().click() mehrdeutig. Da der Befehl startApp einen Befehl ProcessTestObject zurückgibt, kann diese Referenz für die Angabe verwendet werden, auf welche Anwendung ein bestimmter Befehl zutrifft. Beispiel:
ProcessTestObject p1 = startApp("SwingTest"); ProcessTestObject p2 = startApp("TryIt"); ... //b5().click(); ambiguous on playback; which application? b5(p1, DEFAULT).click();
In der letzten Zeile des Beispiels fungiert ProcessTestObject als Anker für die Lokalisierung der gewünschten Anwendung. Das Aufrufen der Methode zum Zurücknehmen der Registrierung ist im Falle von ProcessTestObject nicht erforderlich.