action.click_and_hold(element) — это метод в классе ActionChains , который используется для захвата элемента и начала перетаскивания. Этот метод принимает в качестве аргумента элемент, который вы хотите захватить. После вызова click_and_hold(), вы можете вызвать методы, такие как move_to_element(), move_by_offset() или release() для выполнения перетаскивания элемента.
Как работает .click_and_hold(element)
Найти элемент. Сначала необходимо найти element на веб-странице, на который вы хотите нажать и удерживать кнопку мыши. Это может быть сделано с помощью различных методов поиска, таких как find_element().
element = driver.find_element(By.ID, "ID_ЭЛЕМЕНТА")
Инициализация действий. Затем создается объект ActionChains, который используется для инициализации серии действий.
actions = ActionChains(driver)
Нажать и удерживать. С помощью метода .click_and_hold() объекта ActionChains Selenium «нажимает» на выбранный element и «удерживает» кнопку мыши.
actions.click_and_hold(element)
Выполнение дополнительных действий (опционально). После того как кнопка мыши нажата и удерживается, вы можете добавить дополнительные действия в цепочку, такие как перемещение к другому элементу с помощью .move_to_element().
actions.move_to_element(ДРУГОЙ_ЭЛЕМЕНТ)
Завершение действия. После того как все необходимые действия добавлены в цепочку, их нужно выполнить с помощью метода .perform().
actions.perform()
Например, чтобы перетащить элемент в определенную позицию:
Пример кода:
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By import time url = "https://mob25.com/" # Инициализация драйвера with webdriver.Chrome() as driver: # Устанавливаем неявное ожидание для всех элементов driver.implicitly_wait(10) # Переход на страницу driver.get(url) time.sleep(1) # Поиск элемента для перетаскивания и контейнера click_and_hold_element = driver.find_element(By.ID, "click_and_hold") container = driver.find_element(By.CLASS_NAME, "container") # Выполнение операции перетаскивания actions = ActionChains(driver) actions.click_and_hold(click_and_hold_element).move_to_element(container).release().perform() # Даем время для визуальной проверки (по желанию) time.sleep(5)
Этот скрипт откроет Chrome, перейдет по указанной ссылке, найдет элемент с id=’click_and_hold’ и перетащит его в контейнер с class=’container’.