Skip to content Skip to sidebar Skip to footer

Selenium View Mouse/pointer

Is there any way to actually see the selenium mouse when it's running the tests? Either with a windows cursor image or some kind of dot or cross hair or anything at all! I'm trying

Solution 1:

In the end I had to use the Java robot to get this working. Not only to see the mouse, but also because for an HTML5 Web App dragging and dropping is broken in selenium as two movements are needed to the drag and drop to register. Selenium only does one.

My method drags from the centre of each object and allows for an offset if you want to drag past the element you're dragging to.

publicvoiddragAndDropElement(WebElement dragFrom, WebElement dragTo, int xOffset)throws Exception {
    //Setup robotRobotrobot=newRobot();
    robot.setAutoDelay(50);

    //Fullscreen page so selenium coordinates are same as robot coordinates
    robot.keyPress(KeyEvent.VK_F11);
    Thread.sleep(2000);

    //Get size of elementsDimensionfromSize= dragFrom.getSize();
    DimensiontoSize= dragTo.getSize();

    //Get centre distanceintxCentreFrom= fromSize.width / 2;
    intyCentreFrom= fromSize.height / 2;
    intxCentreTo= toSize.width / 2;
    intyCentreTo= toSize.height / 2;

    //Get x and y of WebElement to drag toPointtoLocation= dragTo.getLocation();
    PointfromLocation= dragFrom.getLocation();

    //Make Mouse coordinate centre of element and account for offset
    toLocation.x += xOffset + xCentreTo;
    toLocation.y += yCentreTo;
    fromLocation.x += xCentreFrom;
    fromLocation.y += yCentreFrom;

    //Move mouse to drag from location
    robot.mouseMove(fromLocation.x, fromLocation.y);

    //Click and drag
    robot.mousePress(InputEvent.BUTTON1_MASK);

    //Drag events require more than one movement to register//Just appearing at destination doesn't work so move halfway first
    robot.mouseMove(((toLocation.x - fromLocation.x) / 2) + fromLocation.x, ((toLocation.y - fromLocation.y) / 2) + fromLocation.y);

    //Move to final position
    robot.mouseMove(toLocation.x, toLocation.y);

    //Drop
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
}

Solution 2:

You can use Selenium "dragAndDrop" and "dragAndDropToObject" commands to drag and drop an element.

"mouseDown", "mouseMoveAt" and "mouseUp" commands are also very good alternatives.

Here is very good examples of both ways in selenium IDE. You can convert that code in to java to use.

Post a Comment for "Selenium View Mouse/pointer"