Appium iOS滑动正在点击

时间:2017-08-16 20:04:28

标签: java ios selenium appium appium-ios

尝试在应用程序中滑动对话(删除它),但Appium充当点击。我在两个设备上尝试了它,它们具有不同的变量,包括开始和结束位置以及持续时间。这是代码:

driver.swipe(250,240,0,240,300);

有没有人看过同样的问题,如果有的话,你的解决方案是什么?

我尝试使用press-wait-moveTo-release以及longPress-moveTo-release操作的TouchActions,但结果相同。 更重要的是,我可以说我可以无问题地向上和向下滚动,但从左到右,反之亦然,似乎无法正常工作。

其他一些信息:

  • Appium 1.6.5 GUI或终端
  • java-client 5.0.0-BETA9
  • selenium-java 3.3.0
  • 使用Maven作为IDE的IntelliJ

3 个答案:

答案 0 :(得分:2)

我使用此代码并证明了它本身。它适用于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只是一个值为UP, DOWN...

的枚举

答案 1 :(得分:0)

实施方法可能如下

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

然后使用别忘了先声明String

调用上述方法
String DOWN="down";
String LEFT ="left";

swipeScreen(DOWN); //or swipeScreen(LEFT); ....likewise up and Right

official web

上的最佳参考

答案 2 :(得分:-1)

尝试一下:

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