Как реализовать swipe/scroll/drag&drop в Appium на Android и iOS?
1️⃣ Как кратко ответить
Для реализации swipe, scroll и drag&drop в Appium на Android и iOS используются методы TouchAction и W3C Actions. Для swipe и scroll применяются методы press, moveTo и release, а для drag&drop — комбинация press, moveTo и release с указанием координат начальной и конечной точек. На iOS можно использовать mobile: scroll и mobile: swipe для специфичных действий.
2️⃣ Подробное объяснение темы
Appium предоставляет возможность автоматизировать жесты, такие как swipe, scroll и drag&drop, на мобильных устройствах под управлением Android и iOS. Эти жесты часто используются для взаимодействия с элементами пользовательского интерфейса, которые не помещаются на экране или требуют перемещения.
Swipe и Scroll
Swipe — это быстрый жест, который перемещает экран в заданном направлении. Scroll — это более медленное перемещение, часто используемое для прокрутки содержимого.
Для реализации swipe и scroll в Appium используется класс TouchAction (для старых версий) или W3C Actions (для новых версий).
Пример реализации Swipe с использованием TouchAction:
from appium.webdriver.common.touch_action import TouchAction
# Инициализация TouchAction
action = TouchAction(driver)
# Выполнение swipe жеста
action.press(x=100, y=500).move_to(x=100, y=100).release().perform()
TouchAction(driver): Создает объект для выполнения жестов.press(x=100, y=500): Указывает начальную точку на экране.move_to(x=100, y=100): Указывает конечную точку, куда перемещается палец.release(): Завершает жест.perform(): Выполняет последовательность действий.
Пример реализации Scroll с использованием W3C Actions:
from appium.webdriver.common.actions.action_builder import ActionBuilder
from appium.webdriver.common.actions.pointer_input import PointerInput
# Инициализация PointerInput
finger = PointerInput(PointerInput.TOUCH, "finger")
actions = ActionBuilder(driver, mouse=finger)
# Выполнение scroll жеста
actions.pointer_action.move_to_location(100, 500)
actions.pointer_action.pointer_down()
actions.pointer_action.move_to_location(100, 100)
actions.pointer_action.release()
actions.perform()
PointerInput(PointerInput.TOUCH, "finger"): Создает объект для управления касаниями.move_to_location(100, 500): Указывает начальную точку.pointer_down(): Имитация нажатия.move_to_location(100, 100): Указывает конечную точку.release(): Завершает жест.perform(): Выполняет действия.
Drag & Drop
Drag & Drop — это жест, который позволяет перемещать элемент с одного места на другое.
Пример реализации Drag & Drop:
from appium.webdriver.common.touch_action import TouchAction
# Инициализация TouchAction
action = TouchAction(driver)
# Выполнение drag & drop
action.press(x=200, y=600).move_to(x=400, y=600).release().perform()
press(x=200, y=600): Указывает начальную точку элемента.move_to(x=400, y=600): Указывает конечную точку, куда элемент будет перемещен.release(): Завершает перемещение.perform(): Выполняет последовательность действий.
Специфичные команды для iOS
На iOS можно использовать команды mobile: swipe и mobile: scroll для выполнения этих жестов:
# Swipe на iOS
driver.execute_script("mobile: swipe", {"direction": "up"})
# Scroll на iOS
driver.execute_script("mobile: scroll", {"direction": "down"})
execute_script("mobile: swipe", {"direction": "up"}): Выполняет swipe вверх.execute_script("mobile: scroll", {"direction": "down"}): Выполняет scroll вниз.
Эти жесты позволяют тестировщикам автоматизировать взаимодействие с элементами, которые не видны на экране, и обеспечивают более полное покрытие тестами.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться