当前位置: 首页 > 知识库问答 >
问题:

AppiumiOS刷卡正在点击

壤驷高洁
2023-03-14

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

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

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

我尝试了带有press-waet-moveTo-释放long Press-moveTo-释放操作的TouchActions,但结果相同。更重要的是,我可以说我可以无问题地上下滚动,但是从左到右,反之亦然,似乎不起作用。

一些补充资料:

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

共有3个答案

吴胜涝
2023-03-14

实现方法可能是这样的

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 DOWN="down";
String LEFT ="left";

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

官方网站上的最佳参考

单于骁
2023-03-14

试试这个:

Thread.sleep(3000);
new TouchAction(driver)
    .press(PointOption.point(500, 596))
    .waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000)))
    .moveTo( PointOption.point(518, 478))
    .release()
    .perform();
岳池暝
2023-03-14

我使用这个代码,它证明了自己。它适用于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...

 类似资料:
  • 是否有一种方法可以在一次刷卡中实现一次只刷一张卡来解除颤振动作?

  • 我正在尝试添加滑动删除功能,以及在长按RecyclerView项时显示底部工作表弹出窗口。我正在使用用于滑动删除,以及用于长按项目时显示弹出窗口。问题是,当我刷项目删除其也检测长按。我想要的是,当物品被刷卡时,它应该忽略长按。我有一个ItemTouchHelper类,它扩展了Simplecallback以进行滑动删除。以下是附加recyclerview以便刷卡删除的代码。 下面是为长点击事件添加监

  • 说明 微信刷卡支付SDK。 官方文档:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1 类 请求参数类 支付参数 类名:\Yurun\PaySDK\Weixin\Micropay\Params\Pay\Request 属性 名称 类型 说明 $_apiMethod string 接口名称 $auth_c

  • 我的测试包括一个元素列表。单击第一个以打开它,然后从右向左滑动以访问下一个并确保它们不同。 在Android上,它工作得很好,但出于某种原因,驱动程序在进入新页面后似乎没有刷新自己。 如果我试图访问一个文本我一直有元素从第一页即使我在第二或第三元素的列表 Appium iOS中是否有某种刷新页面? 这是我的代码: 寻找我的头衔 刷卡 然后重新制作“查找标题”功能,甚至我的ipad上的“难看的我”屏

  • 我正在尝试在回收器视图中实现“刷卡删除”。我有这个密码。 但是,问题是该行在刷卡时被删除。我希望将其保持在那里,即当该行被刷洗时,显示删除按钮,然后用户可以单击该行,而不是完全刷洗删除它,而是在刷洗后显示删除按钮。另外,我也在尝试添加编辑按钮,但在左边的删除按钮上,有什么想法吗?

  • 我的应用程序中有一个ViewPager,我想随时禁用/允许向右滑动。viewpager中的每个视图都包含ListView。我该怎么做?我正试图这样做: 但视图仍将向右移动一点。有人在解决同样的问题吗?