← Назад ко всем вопросам

Как реализовать 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 вниз.

Эти жесты позволяют тестировщикам автоматизировать взаимодействие с элементами, которые не видны на экране, и обеспечивают более полное покрытие тестами.

Тема: Мобильная автоматизация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки