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

如何在Android appium中向上滚动

程鸿波
2023-03-14

我有一个应用程序页面,我需要垂直滚动,以达到应用程序的底部保存按钮。
我正在尝试下面的代码,但得到服务器端错误。

 new TouchAction((PerformsTouchActions) driver).press(point(anchor, startPoint))
.waitAction(waitOptions(Duration.ofMillis(duration))).moveTo(point(anchor, endPoint)).release()
                .perform();

有什么好方法可以在android中实现滚动功能吗?

共有3个答案

李招
2023-03-14

如果应用程序是混合的,并且您处于web环境中,您可以尝试以下方法:

driver.execute_script("arguments[0].scrollIntoView();", element)

你将需要传递任何元素,你知道是在应用程序的顶部,所以可能是应用程序头。

然而,如果应用程序是在本地上下文中,那么TouchAction是一个很好的选择,因为您已经实现了它。

但appium还提供了另一个解决方案,因为触摸操作在iOS中不起作用,那就是使用移动界面,类似于这样:

driver.execute_script("mobile: scroll", {"direction": "up"})
乌修筠
2023-03-14

试着用这个,我不知道如何在主方法中调用它,因为有人给了我,所以如果你明白了,请告诉我

public void swipeRight() throws Exception {

    //The viewing size of the device
    Dimension size = driver.manage().window().getSize();

    //Starting x location set to 5% of the width (near left)
    int startx = (int) (size.width * 0.05);
    //Ending x location set to 95% of the width (near right)
    int endx = (int) (size.width * 0.95);
    //y position set to mid-screen vertically
    int starty = size.height / 2;

    scroll(startx, starty, endx, starty);
}

/**
 * This method does a swipe downwards
 * @author Bill Hileman
 * @throws Exception
 */
public void scrollUp() throws Exception {

    //The viewing size of the device
    Dimension size = driver.manage().window().getSize();

    //Starting y location set to 20% of the height (near bottom)
    int starty = (int) (size.height * 0.20);
    //Ending y location set to 80% of the height (near top)
    int endy = (int) (size.height * 0.80);
    //x position set to mid-screen horizontally
    int startx = size.width / 2;

    scroll(startx, starty, startx, endy);
}
毛淳
2023-03-14

下面是一个如何在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);
            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(startX, endY)
                    .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;

    }
}

和枚举,设置方向:

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

最后用法:

swipe(driver, DIRECTION.UP, 3);

希望这能有所帮助,

 类似资料:
  • 问题内容: 我正在学习如何使用TableViews,并且想知道如何查看tableView是向上滚动还是向下滚动?我一直在尝试诸如此类的各种操作,但由于下面是针对滚动视图的操作,并且没有TableView,因此它没有用。任何建议都会很棒,因为我是新来的… 这就是我的tableView代码中的内容 问题答案: 就像@maddy在您的问题评论中说的那样,您可以使用和来检查是否正在滚动,此外,您可以同时使

  • 问题内容: 嗨,大家好,我是Selenium和Python的新手。我只是在抓取站点pagalguy网站。我知道如何向下滚动到页面底部,但是我需要逐步向下滚动,以便Selenium单击所有readmore按钮,但是我不知道如何逐步向下滚动,因此我像下面的一个一样硬编码 我尝试使用while循环将其自动化,但它导致错误,上面的一个可行,但是我希望它简短并循环,以便可以将其用于具有不同页面长度的所有其他

  • 本文向大家介绍vim 向上滚动,包括了vim 向上滚动的使用技巧和注意事项,需要的朋友参考一下 示例 命令 描述 Ctrl+Y 向上滚动一行。 Ctrl+U 向上滚动半个屏幕(可使用该scroll选项配置)。 Ctrl+B 向上滚动全屏。 z^ 在窗口底部的窗口上方绘制第一行。

  • 问题内容: 有人可以帮助我使用 Java* 使用 WebDriver 自动 向下滚动功能 吗? *** 就我而言,当我垂直向下滚动鼠标时,对于yahoo邮件就会显示( 可见 )。 问题答案: 您可以使用以下代码垂直向下滚动: 同样,也可以通过将y坐标更改为负值来向上滚动: 您还可以使用以下代码: 对于向下滚动: 向上滚动:

  • 问题内容: 尝试向下滚动到页面底部 https://silpo.ua/offers/?categoryId=13, 但没有结果(没有动静) 我的代码: 问题答案: 有几种方法可以向下滚动到页面底部。根据URL , 版权 信息位于页面底部。因此,您可以使用方法在视口中滚动 版权 消息,如下所示:

  • 问题内容: 当我们向下滚动页面时以及当第二个div遇到顶部边界时,我想粘贴第二个div。修复后,它应与其他页面一起滚动。我该如何实现? 和HTML 在此示例中,滚动页面时应固定第二个div。当我们向上滚动时,应该变成先前的状态。请帮我。 问题答案: 你可以用 注意: 不要忘记在页面中包含jquery库链接(假设您是初学者)