Por ejemplo, en aplicaciones HTML en las que esté activa más de una instancia del navegador, resultaría imposible reconocer un navegador ante otro en acciones de la barra de herramientas si éstos se han grabado como en estos ejemplo:
BrowserToolbar_Back().click() BrowserToolbar_Forward().click()
En casos como este, Functional Tester evita el reconocimiento ambiguo ubicando el botón de la barra de herramientas en el navegador que se identifica mediante el documento actualmente cargado (denominado un ancla para el objeto destino). Por ejemplo:
BrowserToolbar_Back(Browser_htmlBrowser(Document_MyHomePage(), DEFAULT), DEFAULT).click();
El botón Atrás de la barra de herramientas es anclado por el navegador que, a su vez, es anclado por el documento "My HomePage" (Mi página inicial). Evidentemente, este ejemplo no funcionaría si cada instancia del navegador tuviera el mismo documento cargado. Tenga en cuenta, que los métodos de script del ayudante que toman un ancla como un argumento, también necesitan otro argumento que especifique el estado del componente (el argumento DEFAULT del ejemplo anterior). El estado predeterminado de los objetos HTML es LOADED. También es posible para los componentes HTML LOADING y UNINITIATED. El estado predeterminado de los objetos de Java es SHOWING y ENABLED. Otros distintivos de estado que los objetos de Java soportan son NOT_SHOWING y DISABLED.
Además, puede identificar la instancia del navegador utilizando una referencia TestObject para la misma, invocando al método de búsqueda del navegador de la siguiente manera (recuerde que debe cancelar el registro de TestObject cuando termine).:
TestObject browserOne = Browser_htmlBrowser(Document_MyHomePage(), DEFAULT).find();
Los mandatos de la barra de herramientas del navegador del script de prueba tendrían la misma apariencia que los de este ejemplo:
BrowserToolbar_Back(myBrowser, DEFAULT).click();
Otra situación en la que el reconocimiento ambiguo se puede convertir en un problema es cuando una prueba tiene más de una aplicación ejecutándose a la vez. Durante la reproducción, los mandatos como b5().click() son ambiguos. Puesto que el mandato startApp devuelve un ProcessTestObject, esta referencia se puede utilizar para especificar qué mandato debe aplicarse a una aplicación en concreto. Por ejemplo:
ProcessTestObject p1 = startApp("SwingTest"); ProcessTestObject p2 = startApp("TryIt"); ... //b5().click(); ambiguous on playback; which application? b5(p1, DEFAULT).click();
En la última línea del ejemplo, el ProcessTestObject funciona como un ancla para ubicar la aplicación deseada. Tenga en cuenta, que no es necesario llamar al método de cancelación de registro para un ProcessTestObject.