Как провести вверх, вниз, влево и вправо в приложении Java IOS - PullRequest
0 голосов
/ 28 декабря 2018

.moveTo () // показывает эту ошибку: метод moveTo (PointOption) не определен для типа WaitOptions.

Я делаю предоставленное быстрое исправление, а именно: добавление приведения к получателю метода

Следующая ошибка показывает: Метод waitAction (WaitOptions) в типе TouchAction не применим для аргументов (TouchAction)

Java-версия «1.8.0_191» Симулятор - iPhone x (IOS 12) Appium 1.9.0

public static void swipe(MobileDriver driver, DIRECTION direction, long duration) {
    org.openqa.selenium.Dimension size = driver.manage().window().getSize();

    int startX = 0;
    int endX = 0;
    int startY = 0;
    int endY = 0;

    switch (direction) {
        case RIGHT:
            startY = (int) (size.height / 2);
            startX = (int) (size.width * 0.90);
            endX = (int) (size.width * 0.05);
            TouchAction action = new TouchAction(driver);
            action.press(PointOption.point(427, 878))
            .waitAction(WaitOptions
                    .waitOptions(Duration
                            .ofMillis(1300))
                    .moveTo(PointOption.point(427, 554))
                    .release().perform();

            break;

        case LEFT:
            startY = (int) (size.height / 2);
            startX = (int) (size.width * 0.05);
            endX = (int) (size.width * 0.90);
            new TouchAction(driver)
                    .press(startX, startY)
                    .waitAction(Duration.ofMillis(duration))
                    .moveTo(endX, startY)
                    .release()
                    .perform();

            break;

        case UP:
            endY = (int) (size.height * 0.70);
            startY = (int) (size.height * 0.30);
            startX = (size.width / 2);
            new TouchAction(driver)
                    .press(startX, startY)
                    .waitAction(Duration.ofMillis(duration))
                    .moveTo(endX, startY)
                    .release()
                    .perform();
            break;


        case DOWN:
            startY = (int) (size.height * 0.70);
            endY = (int) (size.height * 0.30);
            startX = (size.width / 2);
            new TouchAction(driver)
                    .press(startX, startY)
                    .waitAction(Duration.ofMillis(duration))
                    .moveTo(startX, endY)
                    .release()
                    .perform();

            break;

    }
}

Если используется

public enum DIRECTION {LEFT}

Я ожидаю, что он проведет пальцем влево

1 Ответ

0 голосов
/ 28 декабря 2018

waitAction метод не принимает java.time.Duration duration, его нужно передать, используя waitOptions, как вы использовали в RIGHT случае.Проверьте waitOptions детали здесь

Аналогично moveTo и press принимают PointOptions, и напрямую координаты не могут быть переданы.

    case LEFT:
        startY = (int) (size.height / 2);
       startX = (int) (size.width * 0.05);
        endX = (int) (size.width * 0.90);
        new TouchAction(driver)
                .press(PointOption.point(startX, startY))
                .waitAction(WaitOptions
                .waitOptions(Duration
                        .ofMillis(duration))
                .moveTo(PointOption.point(endX, startY))
                .release()
                .perform();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...