繁体   English   中英

Appium iOS滑动点击

[英]Appium iOS swipe is clicking

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

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

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

我尝试了带有press-wait-moveTo-release和longPress longPress-moveTo-release动作的TouchAction,但是结果相同。 而且,我可以告诉我可以无问题地上下滚动,但是从左到右,反之亦然似乎不起作用。

一些其他信息:

  • Appium 1.6.5 GUI或终端
  • Java客户端5.0.0-BETA9
  • 硒的Java 3.3.0
  • IntelliJ作为带有Maven的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只是一个枚举,其值为UP, DOWN...

实现方法可能看起来像这样

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

官方网站上的最佳参考

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM