O Functional Tester suporta um RootTestObject para representar uma visualização global do software em teste. Para ativar o aplicativo SAP para teste, chame o método enableForTesting no RootTestObject. Para executar uma procura global, chame o método de localização no RootTestObject. Os valores válidos para o subitem, o qual é o primeiro argumento do método de localização, são atProperty, atChild, atDescendant e atList. Existem propriedades especiais que se aplicam ao RootTestObject.find, incluindo .processName, .processID, .domain etc. Você pode usar qualquer um desses subitens e propriedades. Por exemplo, você pode utilizar o subitem atChild com a propriedade .domain configurada como SAP, para procurar pelo domínio SAP.
Assim que o Objeto de Teste SAP de nível superior é localizado e retornado, você pode utilizar esse objeto para localizar diversos objetos da hierarquia de tempo de execução da GUI do SAP. Por exemplo:
Assim que tiver o objeto da janela ativa, você poderá utilizar o método GetChildren no objeto de teste da janela principal para localizar e interagir com os diversos objetos em GuiMainWindow.
Abaixo, você encontra um exemplo sobre como você pode realizar interações de usuários com objetos na aplicativo SAP. Este código de amostra:
Exemplo:
import resources.HandCodingWithEnablementHelper; import com.rational.test.ft.*; import com.rational.test.ft.object.interfaces.*; import com.rational.test.ft.object.interfaces.SAP.*; import com.rational.test.ft.object.interfaces.siebel.*; import com.rational.test.ft.script.*; import com.rational.test.ft.value.*; import com.rational.test.ft.vp.*; /** * Description : Functional Test Script * @author Administrator */ public class HandCodingWithEnablement extends HandCodingWithEnablementHelper { /** * Script Name : HandCodingWithEnablement * Generated : Sep 5, 2006 10:03:51 AM * Description : Functional Test Script * Original Host : WinNT Version 5.1 Build 2600 (S) * * @since 2006/09/05 * @author Administrator */ public void testMain (Object[] args) { // Procurando por Objetos de Teste SAP por meio de Scripting // Isto permite que o SAP seja testado pelo Functional Tester e // retorna todos os objetos de nível superior no domínio SAP getRootTestObject().enableForTesting("sapLogon"); TestObject[] sapApps = getRootTestObject().find(atChild(".domain", "SAP")); // Obter uma identificação para o Aplicativo SAP a partir do objeto SAP de nível superior if(sapApps.length > 0){ SAPGuiApplicationTestObject theAPP = ((SAPTopLevelTestObject)sapApps[0]).getApplication(); logInfo("Application Number:" + theAPP.getProperty("Id")); // Obter uma identificação para a Conexão SAP a partir do objeto de teste do aplicativo SAP TestObject[] cons = (TestObject[])theAPP.getProperty("Connections"); SAPGuiConnectionTestObject con = (SAPGuiConnectionTestObject)cons[0]; logInfo("Connection Number:" + con.getProperty("Id")); // Obter uma identificação para a Sessão SAP a partir do objeto de teste da conexão SAP TestObject[] sessions = (TestObject[])con.getProperty("Sessions"); SAPGuiSessionTestObject sess = (SAPGuiSessionTestObject)sessions[0]; logInfo("Session Number:" + sess.getProperty("Id")); // Obter uma identificação para a Janela Principal SAP a partir do objeto de teste de sessão SAP // e interagir com seus filhos até que o objeto desejado seja localizado SAPTopLevelTestObject mainWnd = (SAPTopLevelTestObject)sess.getProperty("ActiveWindow"); TestObject[] wndChild = mainWnd.getChildren(); for (int i=0; i<wndChild.length; i++) { String name = (String)wndChild[i].getProperty("Name"); if (name.compareTo("tbar[1]")== 0) { TestObject[] btn = (TestObject[])wndChild[i].getChildren(); for (int j = 0; j< btn.length; j++) { System.out.println("ToolBar Buttons"); String btnType = (String)btn[j].getProperty("Type"); if (btnType.compareTo("GuiButton")==0) { SAPGuiToggleTestObject button = (SAPGuiToggleTestObject)btn[j]; String btnName = (String)button.getProperty("Name"); if (btnName.compareTo("btn[48]")== 0) { // Clique no botão "Criar Função" ("btn[48]") localizado na barra de ferramentas ("tbar[1]") button.press(); logInfo("Clicked on the Create Role button"); break; } } } } } }else{ logInfo("SAP Application not found"); } } }
Se o aplicativo SAP já estiver ativado, então não será necessário ativá-lo explicitamente para testes. Em vez disso, você pode utilizar o seguinte código para localizar o aplicativo SAP ativado.
DomainTestObject domains[] = getDomains(); for (int i =0; i < domains.length; i ++) { DomainTestObject domain = domains[i]; String name = (String)domain.getName(); if (name.compareTo("SAP") == 0) { // Retorna todos os objetos de teste de nível superior no domínio SAP TestObject[] sapApps = domains[i].getTopObjects(); // Realizar interações de usuários com os objetos SAP } }