Moving slider and dragging elements with WebDriver

Recently i faced with a situation where i had to automate moving ajax slider to the left and right with WebDriver. Googling this situation brought me to working code and some conclusions :

  • If you want to move slider ( both horizontal and vertical) , you can use this method:
/**
     * A convenience method that performs 
     click-and-hold at the location of the source element, 
     moves by a given offset, then releases the mouse.
     * @param slider webElement
     * @param xOffset - horizontal move offset. 
       Positive value means moving to the right, 
        negative - to the left
     * @param yOffset - vertical move offset. 
     Positive value means moving up, negative - down
     * @throws Exception
     */
    public void dragSlider(WebElement slider, int xOffset, int yOffset) 
    throws Exception {
        Actions moveSlider = new Actions(driver);
        Action action = moveSlider.clickAndHold(slider)
                .moveByOffset(xOffset, yOffset)
                .release()
                .build();
        action.perform();
        Thread.sleep(500);
    }
  • In case if you want to drag element from one position to another, you can use this method:
/**
     * @param element webElement
     * @param xOffset - horizontal move offset. 
       Positive value means moving to the right, 
       negative - to the left
     * @param yOffset - vertical move offset. 
       Positive value means moving up, 
       negative - down
     * @throws Exception
     */
    public void dragAndDrop2(WebElement element, int xOffset, int yOffset) 
    throws Exception {
        Actions builder = new Actions(driver);
        Action dragAndDrop = builder.dragAndDropBy(element, xOffset, yOffset) .build(); 
        dragAndDrop.perform();
    }

Another variation of this methods is when you're using not offset parameters, but locators for start and end points between which you want to move your element.