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

iOS垂直滑动在Appium 1.7.2中作为水平滑动执行

狄冠宇
2023-03-14

在iOS real device automation项目中,我使用下面的代码垂直滑动,但在执行过程中,它实际上执行水平滑动。

Dimension size = driver.manage().window().getSize();
int starty = (int) (size.height * 0.80);
int endy = (int) (size.height * 0.20);
int startx = size.width / 2;
driver.swipe(startx, starty, startx, endy, 2000);

如果我做错了什么,有人能告诉我吗?

Xcode版本:8.3.2 iOS版本:10.2应用程序版本:1.7.2

共有2个答案

宇文学博
2023-03-14

我用的是这个,它是双向的,垂直的

public enum DIRECTION {
    DOWN, UP, LEFT, RIGHT;
}


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);
            new TouchAction(driver)
                    .press(startX, startY)
                    .waitAction(Duration.ofMillis(duration))
                    .moveTo(endX, startY)
                    .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;

    }
}
孟建木
2023-03-14

driver.swipe在AppiumJava客户端中不建议使用。你应该停止使用它。

在iOS上进行垂直滑动时,Appium会显示mobile:swipe和如果需要设置方向-mobile:scroll

蟒蛇:

driver.execute_script('mobile: scroll', {'direction': 'down'});
 类似资料:
  • 问题内容: 我想制作selenium脚本,该脚本移动以下站点上给出的滑块 示例名称是如何更改jQuery UI Slider的方向 http://jqueryui.com/demos/slider/ 我不知道该怎么做 问题答案: 产生行动链 Actions链生成器实现了Builder模式,以创建包含一组其他操作的CompositeAction。这应该通过配置一个Actions链生成器实例并调用它的

  • 本文向大家介绍Android中实现水平滑动(横向滑动)ListView示例,包括了Android中实现水平滑动(横向滑动)ListView示例的使用技巧和注意事项,需要的朋友参考一下 水平的ListView-HorizontalListView的使用 Android中ListView默认的是竖直方向的滑动,由于项目的需求,需要ListView是水平滑动的。有很多的方式可以实现,但是比较好的一种方式

  • 我有5刷屏幕和我的代码只是停留在第三个屏幕我想水平滚动。

  • 问题内容: 我有一个UIScrollView,可以在向左或向右滑动时使用,但是我减小了scrollView的大小,因此,现在显示区域不能完全占据超级视图的框架,并且滑动仅在滚动视图的框架内起作用。 我希望即使在缩小的滚动视图的水平范围之外上下滑动时也可以垂直滚动。 建议使用手势识别器,但这超出了我目前对iOS的了解,可以使用更具体的建议或更多指导来开始使用。 问题答案: 有一种更简单的方法,然后使

  • 我正在使用GridView创建一个组件来创建像Excel这样的表。在这里,我最初创建了一个2x2网格,稍后当用户单击按钮时,会添加额外的行和列。 这是我添加新专栏的做法:- 这可以正常工作并添加额外的列。问题是当添加列时,以前的列会收缩以适应新列,从而使每次添加新列时列看起来更小。我想一次只在屏幕上显示2列,然后让用户水平向前滚动以查看更多列。现在网格只能垂直滚动。同样,我希望在添加新行时发生这种

  • 我已经编写了一些代码,可以从高度图中渲染3D世界,现在我也编写了允许行走的代码。问题是,当高度增加时,动画几乎“跳跃”,因为每个单元都相当大。有没有一种简单的方法可以让动画更流畅?(一般来说,我对OpenGL和3D渲染非常陌生,所以我不想讨论插值和更复杂的事情。)