【问题标题】:How to swipe Up, Down, Left and right in appium Java IOS如何在appium Java IOS中上下左右滑动
【发布时间】:2019-05-26 02:02:37
【问题描述】:

.moveTo() // 显示此错误:未定义 WaitOptions 类型的方法 moveTo(PointOption)。

我做了提供的快速修复,即:将强制转换添加到方法接收器

以下错误显示: TouchAction类型中的方法waitAction(WaitOptions)不适用于参数(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;

    }
}

如果使用

公共枚举 DIRECTION { LEFT }

我希望它向左滑动

【问题讨论】:

    标签: java ios maven appium


    【解决方案1】:

    waitAction 方法不接受 java.time.Duration duration 它必须使用 waitOptions 传递,就像您在 RIGHT 案例中使用的那样。查看waitOptions详情here

    同样moveTopress接受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();
    

    【讨论】:

    • 我已经尝试过了,但是 moveTO 显示错误:方法 moveTo(PointOption) 未定义 WaitOptions 类型。如果我应用“将强制转换添加到方法接收器”的快速修复,则会发生以下错误:TouchAction 类型中的方法 waitAction(WaitOptions) 不适用于参数 (TouchAction)
    猜你喜欢
    • 2019-10-14
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多