Aufzeichnungsverhalten verbessern

Sie können das Aufzeichnungsverhalten für eine Benutzeraktion bei einem Steuerelement verbessern, indem Sie die API processMouseEvent() erweitern. Das Functional Tester-Framework ruft die API processMouseEvent() auf, wenn bei einem Steuerelement ein Mausereignis eintritt. Anschließend informiert die API processMouseEvent() das Functional Tester-Framework, welche Methode für die Mausaktion aufgezeichnet werden muss.

Vorbereitende Schritte

Wenn Sie beispielsweise auf eine Schaltfläche klicken, wird die Methode button().click() aufgezeichnet. Sie können dieses Verhalten ändern und weitere Informationen hinzufügen, indem Sie die API processMouseEvent() des Proxys erweitern. Diese API steht nur für GUI-Proxys zur Verfügung.
Sie können die in Tabelle 1 aufgelisteten Methoden erweitern:
Tabelle 1. Erweiterbare Proxymethoden
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)

Proxy zum Aufzeichnen von APIs

Vorbereitende Schritte

APIs des Typs "processxxxMouseEvent()"

Es sind zwar viele APIs des Typs "processxxxMouseEvent()" verfügbar, doch in erster Linie wird für jedes Mausereignis die API "processMouseEvent()" verwendet. Sie können die übrigen APIs des Typs "processxxxMouseEvent()" auf die gewünschte Art und Weise erweitern. Anhand der folgenden Java- und .NET-Implementierungen der API "processMouseEvent()" wird erläutert, wie die übrigen APIs des Typs "processxxxMouseEvent()" miteinander zusammenhängen.

Das folgende Beispiel zeigt die Java-Implementierung von "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);
}

Das folgende Beispiel zeigt die .NET-Implementierung von "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:
		// if one click, and it's not a drag, then, we're Done(no need to processPreUpMouseEvent)
			if (action.GetClickCount() != 1 || action.IsDrag())
				ProcessPreUpMouseEvent(action);
				break;
		case MouseActionStates.HOVER:
			ProcessHoverMouseEvent(action);
			break;
		}
	}
}

Schnittstelle "IMouseActionInfo"

Die API "processMouseEvent()" ruft die Details des Mausereignisses ab, z. B. den Ereigniszustand (EventState), die Bildschirmkoordinaten sowie die Anzahl der Ereignisse, und entscheidet anhand dieser Details, welche Methode aufgezeichnet werden soll. Die Methode "setMethodSpecification()" von "IMouseActionInfo" wird verwendet, um ein MethodSpecification()-Objekt als Ergebnis der API "processMouseEvent()" zurückzugeben.

Klasse "MethodSpecification"

Das MethodSpecification-Objekt stellt die Methode dar, die für ein bestimmtes Ereignis aufgezeichnet wird. Es wird mit dem Methodennamen initialisiert, und der Parameter wird auf das IMouseActionInfo-Objekt festgelegt, das an "processMouseEvent()" übergeben wird. Der Recorder zeichnet mit Hilfe dieser Methode eine bestimmte Benutzeraktion auf.

Beispiel

Mit dem folgenden Mustercode wird die Methode "processMouseEvent()" erweitert, um das Aufzeichnungsverhalten zu ändern. Standardmäßig wird bei einem einmaligen Klicken die Methode "click()" aufgezeichnet. Bei einem Doppelklicken wird die Methode "doubleClick()" aufgezeichnet. In diesem Mustercode wird die API "processSingleMouseEvent()" überschrieben, um zwischen der Methode " click()" und der Methode "doubleClick()" zu wechseln.

Der folgende Mustercode stellt die Erweiterung von "processMouseEvent()" in Java dar:

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)
                  // usually when clicks == 1,  the method is click, now we've changed to method to doubleClick
		method = "doubleClick"; //method = "click";
	else if (clicks == 2)
                  // usually when clicks == 2,  the method is doubleClick, now we've changed to method to click
		method = "click"; // method = "doubleClick";
	else 
		method = "nClick";
	
	// The method to be recorded is represented using this class in RFT
	MethodSpecification methodSpec = MethodSpecification.proxyMethod(this, method,null);
		
         // The method for the user action is set here
	action.setActionMethodSpecification(methodSpec);
	}

Nächste Schritte

Nachdem Sie diesen Proxy-Code erfolgreich entwickelt und implementiert haben, wird das Verfahren zum Aufzeichnen der Methoden "click()" und "doubleClick()" gewechselt.

Feedback