Java 正在单击Appium iOS滑动

Java 正在单击Appium iOS滑动,java,ios,selenium,appium,appium-ios,Java,Ios,Selenium,Appium,Appium Ios,试图在应用程序中滑动对话(删除对话),但Appium充当单击。我在两台设备上试过,它们的起始位置和结束位置以及持续时间都有不同的变量。代码如下: driver.swipe(250,240,0,240,300); 有没有人看到同样的问题,如果有,你的解决方案是什么 我尝试了使用按wait moveTo release和长按moveTo release操作进行触摸操作,但结果相同。 更详细地说,我可以告诉你,我可以上下滚动没有问题,但从左到右和反之亦然似乎不起作用 一些补充资料: Appium

试图在应用程序中滑动对话(删除对话),但Appium充当单击。我在两台设备上试过,它们的起始位置和结束位置以及持续时间都有不同的变量。代码如下:

driver.swipe(250,240,0,240,300);
有没有人看到同样的问题,如果有,你的解决方案是什么

我尝试了使用
按wait moveTo release
长按moveTo release
操作进行触摸操作,但结果相同。 更详细地说,我可以告诉你,我可以上下滚动没有问题,但从左到右和反之亦然似乎不起作用

一些补充资料:

  • Appium 1.6.5 GUI或终端
  • java客户端5.0.0-BETA9
  • selenium java 3.3.0
  • 带Maven的IntelliJ as IDE

我使用此代码,并对其进行了验证。它适用于iOS和Android

它可能被认为是不推荐使用的,但对我来说它是有效的,我没有找到更好的解决方案

public static void swipe(MobileDriver driver, DIRECTION direction, long duration) {
    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);
            break;

        case LEFT:
            startY = (int) (size.height /2);
            startX = (int) (size.width * 0.05);
            endX = (int) (size.width * 0.90);
            break;

        case UP:
            endY= (int) (size.height * 0.70);
            startY  = (int) (size.height * 0.30);
            startX = (size.width / 2);
            break;


        case DOWN:
            startY = (int) (size.height * 0.70);
            endY = (int) (size.height * 0.30);
            startX = (size.width / 2);

            break;

    }

    new TouchAction(driver)
            .press(startX, startY)
            .waitAction(Duration.ofMillis(duration))
            .moveTo(endX, startY)
            .release()
            .perform();

}

DIRECTION
只是一个枚举,其值为
向上、向下…

我使用此代码,并对其进行了验证。它适用于iOS和Android

它可能被认为是不推荐使用的,但对我来说它是有效的,我没有找到更好的解决方案

public static void swipe(MobileDriver driver, DIRECTION direction, long duration) {
    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);
            break;

        case LEFT:
            startY = (int) (size.height /2);
            startX = (int) (size.width * 0.05);
            endX = (int) (size.width * 0.90);
            break;

        case UP:
            endY= (int) (size.height * 0.70);
            startY  = (int) (size.height * 0.30);
            startX = (size.width / 2);
            break;


        case DOWN:
            startY = (int) (size.height * 0.70);
            endY = (int) (size.height * 0.30);
            startX = (size.width / 2);

            break;

    }

    new TouchAction(driver)
            .press(startX, startY)
            .waitAction(Duration.ofMillis(duration))
            .moveTo(endX, startY)
            .release()
            .perform();

}
DIRECTION
只是一个枚举,其值为
向上、向下…

尝试以下操作:

Thread.sleep(3000);
new TouchAction(driver)
    .press(PointOption.point(500, 596))
    .waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000)))
    .moveTo( PointOption.point(518, 478))
    .release()
    .perform();
试试这个:

Thread.sleep(3000);
new TouchAction(driver)
    .press(PointOption.point(500, 596))
    .waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000)))
    .moveTo( PointOption.point(518, 478))
    .release()
    .perform();

实现方法可能如下所示

public void swipeScreen(String direction) {
        JavascriptExecutor js = Device.driver;
        HashMap<String, String> scrollObject = new HashMap<>();
        scrollObject.put("direction", direction);
        js.executeScript("mobile: scroll", scrollObject);
    }

实现方法的最佳参考可能如下所示

public void swipeScreen(String direction) {
        JavascriptExecutor js = Device.driver;
        HashMap<String, String> scrollObject = new HashMap<>();
        scrollObject.put("direction", direction);
        js.executeScript("mobile: scroll", scrollObject);
    }

最佳参考在

虽然此代码可以回答问题,但最好能提供一点解释它为什么会这样做。虽然此代码可以回答问题,但最好能提供一点解释它为什么会这样做。