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 lautet READY. Für HTML-Komponenten sind auch LOADING und UNINITIALIZED möglich. Der Standardstatus für Java-Objekte ist SHOWING und ENABLED. Unterstützt werden außerdem NOT_SHOWING und DISABLED.
Außerdem können Sie die Browserinstanz identifizieren, indem Sie eine entsprechende TestObject-Referenz verwenden und wie folgt die Methode Find im Browser aufrufen:
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. Bei der Wiedergabe sind Befehle wie b5().Click() mehrdeutig. Da über den Befehl StartApp ein "ProcessTestObject" erstellt wird, können Sie über diese Referenz angeben, für welche Anwendung ein bestimmter Befehl Gültigkeit hat. Beispiel:
ProcessTestObject P1 = StartApp("SwingTest") ProcessTestObject P2 = StartApp("TryIt") ... B5().Click() REM (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 Unregister ist im Falle von ProcessTestObject nicht erforderlich.