Как написать функцию тапа по координатам Appium Java?
Всем привет! Подскажите как написать функцию нажатия на экран по координатам при тестировании 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. Может кто-то сталкивался с данной проблемой?
Ответы (2 шт):
Примени метод 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();
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;