How to perform Drag and Drop using Appium

On This Page Drag and Drop utilise Appium

June 26, 2026 · 5 min read · Tool Comparison

How to perform Drag and Drop using Appium

Drag and bead in Appiumis one of the most common motion automation scenarios for mobile apps. From moving stickers in Instagram level to rearranging items in a shopping app, users rely on drag-and-drop functionality daily. Automating these gestures ascertain a smooth experience across devices and OS versions.

Overview

What is Drag and Drop in Appium?

  • Gesture mechanization technique combine press, movement, and liberation actions.
  • Supported throughTouchAction APIin Appium.
  • Allows replicating existent user doings like sneak, dragging, and dislodge elements.

Prerequisites for Automating Drag and Drop

  • Appium Desktop Client and Appium Inspector.
  • JDK installed and configured.
  • IDE like Eclipse or IntelliJ.
  • Test habituation set up (Appium client library, driver, APK under examination).

How to Automate Drag and Drop in Appium

  1. Identify element to drag→ Use locator strategy (ID, XPath, etc.).
  2. Long press element→ Initiate motion using TouchAction.longPress ().
  3. Move to target localisation→ Define coordinates or target element.
  4. Release and perform→ Finalize action with release () .perform ().
  5. Run test→ Validate execution in local setup or cloud environment.

This article explainshow to perform drag and drop in Appium— from requirement and step-by-step automation with TouchAction to formalize results on existent device using BrowserStack.

Drag and Drop using Appium

As most of us are cognizant of how powerful is for, it is important to cognize that the same tool provides us with some first-class forward-looking features and functions which makes it potential to automatise most of the use cases. Drag and drop too can be automated easily by Appium. It provides “ TouchAction ” object to automate and perform these nomadic gestures. TouchAction objects curb a concatenation of case.

Also Read:

In all the Appium guest library, touch aim are created and are given a chain of events. The available events are imperativeness, release, move to, tap, wait, long pressure, cancel and perform.

SUSA automates exploratory testing with persona-driven behavior, catching bugs that scripted automation misses.

Prerequisites to perform Drag and Drop utilise Appium

  1. Appium desktop client
  2. Appium Inspector
  3.  JDK
  4. Development IDE/Eclipse

Steps to automate Drag and Drop using Appium

To automatize drag and drop expend Appium TouchAction, the next measure are fulfill:

  • The element to be dragged is identified and being long pressed.
TouchActions action = new TouchActions (driver); action.longPress (element);
  • It is so moved to the desired location by getting the location coordinates of both drag and drop locations.
TouchActions action = new TouchActions (driver); action.down (10, 10); action.moveTo (50, 50);
  • Element is free to the location and the action is do.
TouchAction action = new TouchAction (driver); action.press (10, 10); action.moveTo (10, 100); action.release (); action.perform ();

Ensure that you receive all the tools installed in your system.In this example, a sample APK is employ to demonstrate Drag and Drop mechanisation. You can lead your app under test or any sample application to understand and implement the like. Make sure that you have all the Appium and essay dependencies configure on your system.

Pro Tip: You can use to add all the capabilities

Java code to execute Drag and Drop activeness

software testing; import java.net.URL; import java.util.List; import java.util.concurrent.TimeUnit; importation java.util.function.Function; import java.net.MalformedURLException; import io.appium.java_client.MobileBy; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; signification org.testng.annotations.Test; import io.appium.java_client.TouchAction; import io.appium.java_client.touch.WaitOptions; import io.appium.java_client.touch.offset.PointOption; importation java.time.Duration; import org.openqa.selenium.By; public grade Dragdrop {@ Test world void DragandDrop () {try {DesiredCapabilities caps = new DesiredCapabilities (); caps.setCapability (`` deviceName '', `` Google pixel 4 ''); //Give your device/emulator name caps.setCapability (`` udid '', `` emulator-5554 ''); // Go to adb location i.e. C: \Users\singe\AppData\Local\Android\Sdk\platform-tools in dictation prompting and accomplish ‘ adb devices ’ to get udid caps.setCapability (`` platformVersion '', `` 8.1.0 ''); //Give android edition of your device. (Check ‘ about headphone ’ section) caps.setCapability (`` appPackage '', `` dragdrop.stufflex.com.dragdrop ''); //provide app packet name. Apkinfo can be use or execute dumpsys window windows | grep -E ‘ mCurrentFocus ’ command in adb shell in cmd in C: \Users\singe\AppData\Local\Android\Sdk\platform-tools caps.setCapability (`` appActivity '', `` dragdrop.stufflex.com.dragdrop.MainActivity ''); AndroidDriver driver = new AndroidDriver (new URL (`` http: //127.0.0.1:4723/wd/hub ''), caps); //Create driver object driver.manage () .timeouts () .implicitlyWait (10, TimeUnit.SECONDS); //Implicit wait of 10 sec driver.findElement (By.id (`` dragdrop.stufflex.com.dragdrop: id/btn_football '')) .click (); AndroidElement a=driver.findElementByXPath (`` // * [contains (@ text, 'Barcelona ')] ''); AndroidElement b=driver.findElement (By.id (`` dragdrop.stufflex.com.dragdrop: id/answer '')); TouchAction action =new TouchAction (driver); action.longPress (PointOption.point (a.getLocation () .x, a.getLocation () .y)) .waitAction (WaitOptions.waitOptions (Duration.ofSeconds (1))) .moveTo (PointOption.point (b.getLocation () .x, b.getLocation () .y)) .release () .perform (); Thread.sleep (10000); //wait of 10 seconds driver.quit (); //closes the driver session} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace ();}}}

The above codification uses a drag and drop quiz app which automates the process of choosing the quiz “ family ”, cart the correct resolution option and drop it to the answer submission space which results in passing off the first question successfully and takes the user to the next quiz interrogation ..

Inorder to get accurate upshot and to not leave a way for any bugs/performance topic later, it is forever recommended to do quiz on different combination of work systems, versions, and screen sizes. This ensures your app act cleanly on every user ’ s mobile regardless of which mobile device, OS or OS version that your user they use. Browserstack provides the program to test both web and mobile apps on multiple available options to choose from. Automation tests can be run on app automate by following the step.

Code after consolidation with Browserstack

package testing; import java.net.URL; import java.util.List; import java.util.concurrent.TimeUnit; significance java.util.function.Function; import java.net.MalformedURLException; import io.appium.java_client.MobileBy; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; meaning org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.Test; import io.appium.java_client.TouchAction; import io.appium.java_client.touch.WaitOptions; significance io.appium.java_client.touch.offset.PointOption; import java.time.Duration; import org.openqa.selenium.By; public class Draganddrop {public static emptiness main (String [] args) drop MalformedURLException, InterruptedException {DesiredCapabilities caps = new DesiredCapabilities (); // Set your admittance credentials caps.setCapability (`` browserstack.user '', “ user name ”); caps.setCapability (`` browserstack.key '', `` access key ''); // Set URL of the application under examination caps.setCapability (`` app '', `` bs: //a03d62880214a159613f30ab467c3132702d32d8 ''); //unique app url coevals for the app under test // Specify twist and os_version for testing caps.setCapability (`` device '', `` Samsung Galaxy A52 ''); caps.setCapability (`` os_version '', `` 11.0 ''); // Set other BrowserStack capabilities caps.setCapability (`` project '', `` Initiative Java Project ''); caps.setCapability (`` build '', `` browserstack-build-1 ''); caps.setCapability (`` name '', `` first_test ''); AndroidDriver & lt; AndroidElement & gt; driver = new AndroidDriver & lt; AndroidElement & gt; (new URL (`` http: //hub.browserstack.com/wd/hub ''), detonator); driver.manage () .timeouts () .implicitlyWait (10, TimeUnit.SECONDS); driver.findElement (By.id (`` dragdrop.stufflex.com.dragdrop: id/btn_football '')) .click (); AndroidElement a=driver.findElementByXPath (`` // * [contains (@ textbook, 'Barcelona ')] ''); AndroidElement b=driver.findElement (By.id (`` dragdrop.stufflex.com.dragdrop: id/answer '')); TouchAction action =new TouchAction (driver); action.longPress (PointOption.point (a.getLocation () .x, a.getLocation () .y)) .waitAction (WaitOptions.waitOptions (Duration.ofSeconds (1))) .moveTo (PointOption.point (b.getLocation () .x, b.getLocation () .y)) .release () .perform (); // Invoke driver.quit () after the test is done to betoken that the tryout is completed. driver.quit ();}}

Test results can be viewed on once the test execution is completed. By clicking on individual tests will give you a detailed story for each examination including steps,, Appium logs, execution video logs, and other details for best debugging of failed tests.

Tags
55,000+ Views

# Ask-and-Contributeabout this topic with our Discord community.

Related Guides

Automate This With SUSA

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts needed.

Try SUSA Free

Test Your App Autonomously

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.

Try SUSA Free