Procurando por Objetos de Teste

O Rational Functional Tester suporta um meio de localizar um ou mais TestObjects correspondentes aos critérios de procura especificados. A procura baseia-se em pares de nomes/valores que representam propriedades do TestObject ou TestObjects que estão sendo procurados. A procura pode ser global ou estar limitada a filhos de um TestObject pai.

O Rational Functional Tester suporta um RootTestObject para representar uma visualização global do software sob teste. Para executar uma procura global, chame o método de localização no RootTestObject. Chamar um método de localização TestObject procurará apenas os filhos desse TestObject.

O primeiro argumento no método de localização é um subitem para as propriedades de procura. O segundo argumento opcional é um sinalizador que indica se apenas os filhos que podem ser incluídos no mapa de objetos de teste devem ser procurados. Os valores válidos para os subitens da propriedade são:

Há propriedades especiais que se aplicam a RootTestObject.find, incluindo:

Exemplos:
TestObject[] foundTOs ;
RootTestObject root = RootTestObject.getRootTestObject() ;
// Localizar todas as janelas de nível superior no domínio do Windows com a legenda "My
// Document"
CaptionText caption = new CaptionText("My Document") ;
foundTOs = root.find(atChild(".domain", "Win", ".caption",
     caption)) ;

// Localizar os diálogos e, em seguida, retornar os botões
// "OK" de seus filhos.
RegularExpression dialogRE = new
     RegularExpression("*dialog", false) ;
RegularExpression buttonRE = new
     RegularExpression("*button", false) ;
foundTOs = root.find(atList(atDescendant(".class",
                     dialogRE), 
                     atChild(".class", buttonRE,".value", 
                     "OK"))) ;

// Iniciar o Bloco de Notas, ativar dinamicamente esse processo,
// localizar sua janela de nível superior que corresponde ao id de processo
// e obter sua janela de texto descendente.
	ProcessTestObject p1 = StartApp("Notepad") ;
	Integer pid = new Integer((int)p1.getProcessId()) ;
	foundTOs = root.find(atList(atProperty(".processId",
     pid), atDescendant(".class", ".text"))) ;
 
// Isso ativa um aplicativo Windows com a propriedade handle da janela fornecida e retorna um
// TestObject representando a janela.
Long hWnd = getAppsHwnd();
foundTOs = root.find(atChild(".hwnd", hWnd, ".domain", "Win"));

// Isso ativa um aplicativo .NET com a propriedade handle da janela fornecida e retorna um
// TestObject representando a janela.
Long handle = getAppsHwnd();
foundTOs = root.find(atChild("Handle", handle, ".domain", "Net"));

Os aplicativos Windows e .NET são ativados dinamicamente pelo Rational Functional Tester e a propriedade usada para ativar esses aplicativos é .processName. Para localizar o objeto de teste necessário em um aplicativo Windows ou .NET, use o .processName na consulta.

Exemplo: o código de exemplo a seguir destina-se a localizar o botão 9 em uma calculadora e, em seguida, clicar nele.
 Property[] props = new Property[4];
        // localizar janela de nível superior do aplicativo da calculadora
        props[0] = new Property(".processName", "calc.exe");
        props[1] = new Property(".class","SciCalc");
        props[2] = new Property(".name", "Calculator");
        props[3] = new Property(".text", "Calculator");
        TestObject[] tos = find(atChild(props));
       
        if(tos.length > 0)
        {
            // localizar botão com o texto 9
            props = new Property[3];
            props[0] = new Property(".class","Button");
            props[1] = new Property(".name", "9");
            props[2] = new Property(".text", "9");
            TestObject[] tos9 = tos[0].find(atChild(props));

            if(tos9.length > 0)
            {
                // Clicar no botão 9
                ((GuiTestObject)tos9[0]).click();
            }
        }

Feedback