Amélioration du comportement d'enregistrement

Vous pouvez améliorer le comportement d'enregistrement d'une action utilisateur sur un contrôle en étendant l'API processMouseEvent(). La structure Functional Tester appelle l'API processMouseEvent() lorsqu'un événément de souris survient sur un contrôle. L'API processMouseEvent() indique à la structure Functional Tester la méthode à enregistrer pour l'action de la souris.

Avant de commencer

Par exemple, lorsque vous cliquez sur un contrôle button, la méthode button().click() est enregistrée. Vous pouvez modifier ce comportement et d'autres informations en étendant l'API processMouseEvent() du proxy. Cette API est disponible uniquement pour les proxys d'interface graphique.
Vous pouvez étendre les méthodes répertoriées dans le Tableau 1 :
Tableau 1. Méthodes de proxy extensibles
Java .Net
void processMouseEvent(IMouseActionInfo action) void ProcessMouseEvent(IMouseActionInfo action)
void processSingleMouseEvent(IMouseActionInfo action) void ProcessPreDownMouseEvent(IMouseActionInfo action)
void processHoverMouseEvent(IMouseActionInfo action) void ProcessPreUpMouseEvent(IMouseActionInfo action)
  void ProcessHoverMouseEvent(IMouseActionInfo action)

API d'enregistrement de proxy

Avant de commencer

API processxxxMouseEvent()

De nombreuses API processxxxMouseEvent() sont disponibles mais l'API principale utilisée pour un événement de souris est processMouseEvent(). Vous pouvez étendre les autres API processxxxMouseEvent() selon vos besoins. Les implémentations Java et .Net de l'API processMouseEvent() ci-dessous expliquent comment les autres API processxxxMouseEvent() sont liées.

L'exemple suivante illustre l'implémentation Java de processMouseEvent() :

public void processMouseEvent(IMouseActionInfo action)
{
	int eventState = action.getEventState();
	if ( eventState == IMouseActionInfo.PRE_DOWN ||
		 eventState == IMouseActionInfo.PRE_UP ||
		 eventState == IMouseActionInfo.POST_UP )
		processSingleMouseEvent(action);
	else if ( eventState == IMouseActionInfo.HOVER )
		processHoverMouseEvent(action);
}

L'exemple suivant illustre l'implémentation .Net de processMouseEvent() :

public override void ProcessMouseEvent(IMouseActionInfo action)
{
	switch (action.GetEventState())
	{
		case MouseActionStates.PRE_DOWN:
			if (action.GetClickCount() == 1)
				ProcessPreDownMouseEvent(action);
			break; 
		case MouseActionStates.PRE_UP:
		// en cas de clic, et non de glissement, il n'y a rien à ajouter (il n'est pas nécessaire de définir processPreUpMouseEvent)
			if (action.GetClickCount() != 1 || action.IsDrag())
				ProcessPreUpMouseEvent(action);
				break;
		case MouseActionStates.HOVER:
			ProcessHoverMouseEvent(action);
			break;
		}
	}
}

Interface IMouseActionInfo

L'API processMouseEvent() obtient les détails MouseEvent, tels qu'EventState, les coordonnées d'écran et le nombre d'événements, et les utilise pour déterminer la méthode enregistrée. La méthode setMethodSpecification() d'IMouseActionInfo permet de renvoyer un objet MethodSpecification() comme résultat de l'API processMouseEvent().

Classe MethodSpecification

L'objet MethodSpecification représente la méthode en cours d'enregistrement pour un événement particulier. Il est initialisé lorsque le nom de la méthode et le paramètre sont associés à l'objet IMouseActionInfo transmis à processMouseEvent(). L'enregistreur choisit cette méthode et procède à l'enregistrement pour une action utilisateur donnée.

Exemple

L'exemple de code suivant étend processMouseEvent() afin de changer le comportement d'enregistrement. Par défaut, lorsque vous cliquez une fois, la méthode click() est enregistrée. Lorsque vous cliquez deux fois, la méthode doubleClick() est enregistrée. Dans cet exemple, l'API processSingleMouseEvent() est remplacée afin d'inverser l'enregistrement des méthodes click() et doubleClick().

L'exemple suivant illustre l'extension de processMouseEvent() dans Java :

import com.rational.test.ft.domain.IMouseActionInfo;
import com.rational.test.ft.sys.MethodSpecification;
.
.
public void processSingleMouseEvent(IMouseActionInfo action)
{
	String method = null;
	int clicks = action.getClickCount();	
	if (clicks == 1)
                  // en général, si le nombre de clics est égal à 1, la méthode est click ; nous avons remplacé cette méthode par doubleClick
		method = "doubleClick"; //method = "click";
	else if (clicks == 2)
                  // en général, si le nombre de clics est égal à 2, la méthode est doubleClick ; nous avons remplacé cette méthode par click
		method = "click"; // method = "doubleClick";
	else 
		method = "nClick";
	
	// La méthode à enregistrer est représentée par cette classe dans RFT
	MethodSpecification methodSpec = MethodSpecification.proxyMethod(this, method,null);
		
         // La méthode pour l'action utilisateur est définie ici
	action.setActionMethodSpecification(methodSpec);
	}

Que faire ensuite

Une fois le code de proxy développé et déployé, l'enregistrement des méthodes click() et doubleClick() est inversé.

Retour d'informations