O Functional Tester suporta uma classe RootTestObject para representar uma visualização global do software que está sob teste. Para ativar o aplicativo SAP para teste, chame o método enableForTesting na classe RootTestObject. Para procurar globalmente, chame o método de localização na classe 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. Há propriedades especiais que se aplicam a RootTestObject.find, incluindo as propriedades .processName, .processID e .domain. Você pode utilizar quaisquer destes subitens e destas propriedades. Por exemplo, para procurar pelo domínio SAP, é possível usar o subitem atChild com a propriedade .domain configurada como SAP.
Após o Objeto de Teste SAP de nível superior ser localizado e devolvido, é possível usá-lo para localizar vários objetos da hierarquia de tempo de execução da GUI do SAP. Por exemplo:
Assim que tiver o objeto da janela ativa, será possível usar o método GetChildren no objeto de teste da janela principal para localizar e interagir com vários objetos no método 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 executa estas ações:
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, não será necessário ativar o aplicativo SAP explicitamente para teste. 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
}
}
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();
}
}
}