Recherche d'objets de test SAP

Functional Tester permet de rechercher un ou plusieurs objets de test (TestObjects) SAP répondant à des critères spécifiques, même sans utiliser la mappe d'objets.

Pour représenter une vue globale du logiciel en cours de test, Functional Tester prend en charge un objet de test racine, RootTestObject. Pour permettre le test de l'application SAP, vous devez appeler la méthode enableForTesting sur RootTestObject. Pour effectuer une recherche globale, vous devez invoquer la méthode find sur RootTestObject. Les valeurs admises pour le sous-élément, qui correspond au premier argument de la méthode find, sont atProperty, atChild, atDescendant et atList. Des propriétés spéciales s'appliquent à RootTestObject.find, notamment .processName, .processID, .domain, etc. Vous pouvez utiliser n'importe lequel de ces sous-éléments et propriétés. Par exemple, vous pouvez utiliser le sous-élément atChild avec la propriété .domain associée à la valeur SAP pour rechercher le domaine SAP.

Remarque : Pour plus d'informations sur la hiérarchie d'exécution de l'interface graphique de SAP, reportez-vous à la documentation SAP GUI Script Framework.

Une fois que l'objet de test SAP de niveau supérieur est trouvé et renvoyé, vous pouvez utiliser cet objet pour trouver différents objets de la hiérarchie d'exécution de l'interface graphique SAP. Par exemple :

Une fois que vous disposez de l'objet correspondant à la fenêtre active, vous pouvez utiliser la méthode GetChildren dans l'objet de test de la fenêtre principale pour rechercher et manipuler différents objets sur GuiMainWindow.

L'exemple ci-après explique comment vous pouvez interagir avec des objets de l'application SAP. Cet exemple de code :

  1. Active l'application SAP pour effectuer des tests
  2. Renvoie l'objet de test SAP représentant la fenêtre
  3. Utilise cet objet pour rechercher le bouton Create Role dont la propriété du nom de bouton correspond à btn[48] dans la barre d'outils SAP.
  4. Clique sur le bouton Create Role.

Exemple :

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) 
	{
		// Recherche d'objets de test SAP via le scriptage 
		
		// Permet à Functional Tester de tester SAP et de renvoyer tous 
		// les objets de test de niveau supérieur du domaine SAP.
		getRootTestObject().enableForTesting("sapLogon");
		TestObject[] sapApps = getRootTestObject().find(atChild(".domain", "SAP"));
		
		// Obtention d'un descripteur pour l'application SAP auprès d'un objet SAP de niveau supérieur
		if(sapApps.length > 0){
			SAPGuiApplicationTestObject theAPP =  ((SAPTopLevelTestObject)sapApps[0]).getApplication();
			logInfo("Application Number:" + theAPP.getProperty("Id"));
			
			// Obtention d'un descripteur pour la connexion SAP auprès d'un objet de   //test d'application SAP
			TestObject[] cons = (TestObject[])theAPP.getProperty("Connections");

			SAPGuiConnectionTestObject con = (SAPGuiConnectionTestObject)cons[0];
			logInfo("Connection Number:" + con.getProperty("Id"));
			
			// Obtention d'un descripteur pour la session SAP auprès d'un objet de test de connexion SAP
			TestObject[] sessions = (TestObject[])con.getProperty("Sessions");
			SAPGuiSessionTestObject sess = (SAPGuiSessionTestObject)sessions[0];
			logInfo("Session Number:" + sess.getProperty("Id"));
	
			// Obtention d'un descripteur pour la fenêtre principale SAP auprès d'un objet de test de session SAP et itération sur ses enfants
			jusqu'à ce que l'objet recherché soit trouvé
			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)
							{
								// Clic sur le bouton "Create Role" ("btn[48]") placé dans la barre d'outils ("tbar[1]")
								button.press();
								logInfo("Clicked on the Create Role button");
								break;
							}
						}
					}
				}
			}
		}else{
			logInfo("SAP Application not found");
		}
	}
}

Si l'application SAP est déjà activée, il est inutile de l'activer explicitement à des fins de test. A la place, vous pouvez utiliser le code suivant pour rechercher l'application SAP activée.

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)
		{
			// Renvoie tous les objets de test de niveau supérieur dans le domaine SAP
			TestObject[] sapApps = domains[i].getTopObjects();
				
			// Interactions avec les objets SAP
		}
	}

Retour d'informations