code: public Actions dragAndDrop(WebElement source, WebElement target) {
      if (isBuildingActions()) {
        action.addAction(new ClickAndHoldAction(jsonMouse, (Locatable) source));
        action.addAction(new MoveMouseAction(jsonMouse, (Locatable) target));
        action.addAction(new ButtonReleaseAction(jsonMouse, (Locatable) target));
      }
  
      return moveInTicks(source, 0, 0)
          .tick(defaultMouse.createPointerDown(LEFT.asArg()))
          .moveInTicks(target, 0, 0)
          .tick(defaultMouse.createPointerUp(LEFT.asArg()));
    }
docs: A convenience method that performs click-and-hold at the location of the source element,
  moves to the location of the target element, then releases the mouse.
  
  @param source element to emulate button down at.
  @param target element to move to and release the mouse at.
  @return A self reference.