Как написать функцию тапа по координатам Appium Java?

Рейтинг: -1Ответов: 2Опубликовано: 19.01.2023

Всем привет! Подскажите как написать функцию нажатия на экран по координатам при тестировании Android-приложения? Проблема в том, что при нажатии в приложении на кнопку входа, снизу экрана появляется окно с выбором способа входа, которое можно закрыть только нажав на пустую область экрана. Но сколько методов не перепробовал, тап по координатам не срабатывает в новой версии selenium. Вот пример старой реализации:

Public void tapByCoordinates(int x, int y){
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(PointOption.point(299, 437)).perform()
}

Но эта функция не срабатывает у меня. Версия selenium - 4.6.0, версия java - 8.3.0. Может кто-то сталкивался с данной проблемой?

Ответы

▲ 0

Примени метод performTouchAction(), который принимает объект типа TouchAction:

JavascriptExecutor js = (JavascriptExecutor) driver;
Map<String, Object> params = new HashMap<>();
params.put("x", x);
params.put("y", y);
js.executeScript("mobile: tap", params);

тут x и y - это координаты нажатия.

Если не сработало, примени Appium, метод tap() класса TouchAction из Appium, он принимает три аргумента: x, y и количество касаний.

TouchAction touchAction = new TouchAction(driver);
touchAction.tap(x, y).perform();
▲ 0
    public <ваш класс> tap(int x, int y) {
        TouchAction touchAction = new TouchAction((AppiumDriver) driver);
        touchAction.tap(PointOption.point(x, y)).perform();
        System.out.println("Get TAPPED");
    }

// Также нужны эти библиотеки(лишнее удалить)
import io.appium.java_client.TouchAction;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.interactions.Actions;