Pour représenter une vue globale du logiciel en cours de test, Functional Tester prend en charge une classe d'objet de test racine, RootTestObject. Pour permettre le test de l'application SAP, vous devez appeler la méthode enableForTesting sur la classe 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 les propriétés .processName, .processID et .domain. Vous pouvez utiliser l'un de ces sous-éléments ou l'une de ces propriétés. Par exemple, pour rechercher le domaine SAP, vous pouvez utiliser le sous-élément atChild avec la propriété .domain associée à la valeur SAP.
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 la classe GuiMainWindow.
L'exemple ci-après explique comment vous pouvez interagir avec des objets de l'application SAP. Cet exemple de code :
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
}
}
public class SAPEditControl extends SAPEditControlHelper {
/**
* Script Name : <b>SAPEditControl</b> Generated : <b>Aug 3, 2011 2:29:57
* PM</b> Description : Functional Test Script Original Host : WinNT Version
* 5.1 Build 2600 (S)
*
* @since 2011/08/03
* @author IBM Rational
*/
public void testMain(Object[] args) {
// Define a set of properties for a control (test object) to be searched
Property Props[] = new Property[4];
// property and value
Props[0] = new Property(".class", "Html.TABLE");
Props[1] = new Property(".customclass", "SAPEditControl");
Props[2] = new Property(".id", "WD019E-r");
Props[3] = new Property(".classIndex", "10");
try {
// Find and store test objects into array
TestObject Obj[] = getRootTestObject().find(atDescendant(Props));
// Perform a click on the very first object.
((TextGuiSubitemTestObject) Obj[0]).click();
// Set a text into SAP Edit Control
((TextGuiSubitemTestObject) Obj[0]).setText("ClaimedAmount");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
//call unregisterAll to clear reference.
unregisterAll();
}
}
}