Procurando por TestObjects SAP

O Functional Tester suporta uma forma de localização de um ou mais TestObjects SAP correspondendo um critério de procura especificado, mesmo sem a utilização do Mapa de Objetos.

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.

Nota: Consulte a documentação do SAP GUI Script Framework para obter informações adicionais sobre a Hierarquia do Tempo de Execução da GUI do 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:

  1. Ativa o aplicativo SAP para teste
  2. Retorna o objeto de teste SAP representando a janela
  3. Utiliza este objeto para localizar o botão Criar Função cuja propriedade do nome do botão é configurada como btn[48] na barra de ferramentas SAP.
  4. Clica no botão Criar Função

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
		}
	}

Feedback