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) |
processxxxMouseEvent() API
有许多可用的 processxxxMouseEvent() API,用于鼠标事件的主 API 为 processMouseEvent()。可以按照自己的方式扩展 processxxxMouseEvent() API 的测试。以下 processMouseEvent() API 的 Java 和 .Net 实施说明了其余 processxxxMouseEvent() API 的关系。
下面的示例显示了 processMouseEvent() 的 Java 实施:
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); }
下面的示例展示了 processMouseEvent() 的 .Net 实施:
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; } } }
IMouseActionInfo 接口
processMouseEvent() API 会获取 MouseEvent 详细信息,如事件状态、屏幕坐标和事件数,并且会使用这些详细信息来确定要录制的方法。IMouseActionInfo 的 setMethodSpecification() 方法用于返回 MethodSpecification() 对象作为 processMouseEvent() API 的结果。
MethodSpecification 类
MethodSpecification 对象表示特定事件的正在录制的方法。 方法名称将采用初始化名称,参数将设置为正在传递给 processMouseEvent() 的 IMouseActionInfo 对象。此录制器将选择此方法并针对此给定用户操作进行录制。
以下示例表示在 Java 中扩展 processMouseEvent():
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); }