| 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);
}