Por exemplo, em aplicativos HTML quando mais de uma instância de navegador está ativa, reconhecer entre um e outro navegador nas ações da barra de ferramentas seria impossível se tivessem sido gravados como nestes exemplos:
BrowserToolbar_Back().click() BrowserToolbar_Forward().click()
Em casos desse tipo, o Functional Tester evita o reconhecimento ambíguo localizando o botão da barra de ferramentas no navegador que está identificado por seu documento carregado no momento (referido como uma âncora para o objeto de destino). Por exemplo:
BrowserToolbar_Back(Browser_htmlBrowser(Document_MyHomePage(), DEFAULT), DEFAULT).click();
O botão voltar da barra de ferramentas está ancorado pelo navegador, que está ancorado pelo documento "My HomePage". Esse exemplo não funcionará, naturalmente, se cada instância do navegador tiver o mesmo documento carregado. Observe que os métodos de script auxiliares que utilizam uma âncora como argumento também requerem outro argumento que especifique o estado do componente (o argumento DEFAULT no exemplo anterior). O estado padrão para objetos HTML é LOADED. Para componentes HTML, também são possíveis LOADING e UNINITIATED. O estado padrão para objetos Java™ é SHOWING e ENABLED. Outros sinalizadores de estado suportados para objetos Java são NOT_SHOWING e DISABLED.
Além disso, você pode identificar a instância do navegador utilizando uma referência TestObject para ela, chamando o método de localização no navegador, como a seguir (lembre-se de cancelar o registro de TestObject quando terminar):
TestObject browserOne = Browser_htmlBrowser(Document_MyHomePage(), DEFAULT).find();
Os comandos da barra de ferramentas do navegador no script de teste seriam semelhantes a este exemplo:
BrowserToolbar_Back(myBrowser, DEFAULT).click();
Outra situação em que o reconhecimento ambíguo pode ser problema é quando um teste tem mais de um aplicativo em execução ao mesmo tempo. Durante a reprodução, comandos como b5().click() são ambíguos. Como o comando startApp retorna ProcessTestObject, essa referência pode ser utilizada para especificar a qual aplicativo um determinado comando se aplica. Por exemplo:
ProcessTestObject p1 = startApp("SwingTest"); ProcessTestObject p2 = startApp("TryIt"); ... //b5().click(); ambiguous on playback; which application? b5(p1, DEFAULT).click();
Na última linha do exemplo, o ProcessTestObject funciona como âncora para localizar o aplicativo desejado. Observe que chamar o método cancelar registro para um ProcessTestObject não é necessário.