Perform action by dragging an element from one place and dropping it at the required position.
By using TouchAction class objects we can perform the operation of Drag and Drop.
Syntax :
actions = TouchAction(driver) actions.long_press(drag_object).move_to(drop_object).release().perform()
Example: In the below example we are launching the app on an Android device and dragging the element from one place to another.
DragAndDrop.py
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from selenium.common.exceptions import ElementNotVisibleException, ElementNotSelectableException, NoSuchElementException
from selenium.webdriver.support.wait import WebDriverWait
import time
# Step 1 : Create "Desired Capabilities"
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['automationName'] = 'UiAutomator2'
desired_caps['platformVersion'] = '10'
desired_caps['deviceName'] = 'Pixel3XL'
desired_caps['app'] = ('/Skill2Lead/Appium_Demo_App/Android/Android_Appium_Demo.apk')
desired_caps['appPackage'] = 'com.skill2lead.appiumdemo'
desired_caps['appActivity'] = 'com.skill2lead.appiumdemo.MainActivity'
# Step 2 : Create "Driver object"
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# Step 3 : Create "WebDriver object"
wait = WebDriverWait(driver, 25, poll_frequency=1,
ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException,
NoSuchElementException])
# Step 4 : Scroll and click on "Drag and Drop" button
wait.until(lambda x: x.find_element_by_android_uiautomator(
'new UiScrollable(new UiSelector()).scrollIntoView(text("DRAGANDDROP"))')).click()
# Step 5 : Create variables for drag variable and drop variable
ele_kw = wait.until(lambda x: x.find_element_by_id("com.skill2lead.appiumdemo:id/ingvw"))
ele_lay = wait.until(lambda x: x.find_element_by_id("com.skill2lead.appiumdemo:id/layout2"))
# Step 6 : Create TouchAction class object
actions = TouchAction(driver)
# Step 7 : Long press the element and drag it to required position
actions.long_press(ele_kw).move_to(ele_lay).release().perform()
time.sleep(2)
driver.quit()