Playing back low level mouse and keyboard actions
Low-level playback of mouse and keyboard actions provides more control of events of user actions. For example, HCL OneTest™ UI currently supports TestObject.click(), where the click consists of low-level actions including mouse move, left mouse button down, and left mouse button up. With this functionality, you can play back the individual components of a mouse click.
Low-level playback also supports mouse wheel scrolling.
You may want to use low-level playback to overcome a product limitation or an obscure mouse or keyboard action. For example, to draw a circle on a canvas in a drawing program, HCL OneTest™ UI does not support the complex circular drag but you can use the drag() method to draw straight lines. To overcome an obscure mouse or keyboard action, you can use low-level playback to play back the mouse actions for drawing the circle.
The RootTestObject class includes two methods:
- emitLowLevelEvent(LowLevelEvent)
- emitLowEvent(LowLevelEvent[])
Factory methods on SubitemFactory for construction of LowLevelEvents include:
- delay(int)
- keyDown(string)
- keyUp(string)
- mouseMove(point)
- mouseWheel(int)
- leftMouseButtonDown()
- leftMouseButtonUp()
Parallel methods exist for the middle and right mouse buttons. The delay event guarantees a delay of at least the milliseconds specified, taking into account the time taken by the system to consume the previous event.
A HCL OneTest™ UI, Eclipse Integration example to draw the letter V in the upper left portion of the drawing canvas:
// This routine will draw a "V" in the upper left portion
// of the drawing canvas.
// First a point in the upper left corner will be clicked, the left mouse
// button will be held down for the duration of the action, the mouse
// will be moved to the right and down, then to the right and back up,
// and finally the left mouse button will be released.
Rectangle screenRect =
(Rectangle) drawingWindow().getProperty(".screenRectangle");
Point origin = new Point(screenRect.x + 5, screenRect.y + 5);
LowLevelEvent llEvents[] = new LowLevelEvent[7];
llEvents[0] = mouseMove(atPoint(origin.x, origin.y));
llEvents[1] = leftMouseButtonDown();
// insert a delay to provide the SUT with time to respond
// to the events being delivered to it.
llEvents[2] = delay(250);
llEvents[3] = mouseMove(atPoint(origin.x + 25, origin.y + 50));
llEvents[4] = delay(250);
llEvents[5] = mouseMove(atPoint(origin.x + 50, origin.y));
llEvents[6] = leftMouseButtonUp();
getRootTestObject().emitLowLevelEvent(llEvents);
A HCL OneTest™ UI, Microsoft Visual Studio .NET Integration example to test a TrackBar control and confirm the control responds to the mouse wheel events:
' This will test a TrackBar control to make sure
' that it responds to mouse wheel events.
TrackBar1Slider().Click(AtPoint(0, 0))
' Create a Low Level Event representing scrolling
' the mouse wheel down 25 clicks.
Dim ScrollDown As LowLevelEvent = MouseWheel(-25)
GetRootTestObject().EmitLowLevelEvent(ScrollDown)
' Verify The Results.