Manipulando o Reconhecimento Ambíguo

Em algumas situações durante a reprodução, é possível que o Functional Tester não consiga diferenciar entre dois objetos semelhantes no software em teste. Este tópico descreve como lidar com estas situações.

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.


Feedback