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:
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.
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(); } }