Drag and Drop(перетаскивание) — это операция перетаскивания элемента из одной позиции в другую. Это может быть полезно, если вы хотите автоматизировать действия пользователя, такие как загрузка файлов, перемещение элементов в различные области или установка их в определенный порядок.
Selenium предоставляет реализацию drag and drop с помощью класса ActionChains. Вы можете создать экземпляр ActionChains, используя экземпляр вашего веб-драйвера, а затем использовать методы, такие как drag_and_drop(), drag_and_drop_by_offset() или click_and_hold(), чтобы выполнить действие перетаскивания.
.drag_and_drop()
action.drag_and_drop(element, target) — это метод класса ActionChains. Он позволяет перетащить element и поместить его в элемент target.
element — элемент, который нужно перетаскивать.
target — целевой элемент, куда будем перемещать иcходный элемент
Шаги работы метода .drag_and_drop():
Найти Элемент для Перетаскивания: Сначала Selenium должен найти element на веб-странице, который вы хотите перетащить. Это может быть сделано с помощью различных методов поиска, таких как find_element(By.ID, ‘ID_ELEM’).
# Находим исходный элемент, который будем перемещать element = driver.find_element(By.ID,"source-element")
Найти целевой элемент: затем Selenium должен найти место target, куда вы хотите перетащить выбранный element.
# Находим целевой элемент, куда будем перемещать иcходный элемент target = driver.find_element(By.ID,"target-element")
Инициализация действий: После того как элементы найдены, создается объект ActionChains, который используется для инициализации серии действий.
# Создаём экземпляр класса ActionChains actions = ActionChains(driver)
Выполнение перетаскивания: С помощью метода drag_and_drop объекта ActionChains Selenium «берет» element, «перетаскивает» его и «отпускает» на месте target. Весь этот процесс происходит виртуально в браузере, как если бы пользователь делал это вручную.
# Выполняем действие перетаскивания actions.drag_and_drop(element, target).perform()
Завершение действия: После того как действие перетаскивания инициировано, его нужно выполнить с помощью метода perform.
Пример работы:
import time from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By url = "https://mob25.com/" with webdriver.Chrome() as driver: driver.get(url) # Находим элементы draganddrop = driver.find_element(By.CLASS_NAME, "draganddrop") draganddrop_end = driver.find_element(By.CLASS_NAME, "draganddrop_end") # Выполняем перетаскивание ActionChains(driver).drag_and_drop(draganddrop, draganddrop_end).perform() time.sleep(5)