首页 > 解决方案 > 如何滚动/滑动页面的一部分?

问题描述

我必须水平滚动页面的那一部分(它可以左右移动)。

应用程序的打印屏幕

怎么做?

我试图捕获页面的某个区域并滑动它,但 IDE 只是用 0 执行代码。然后我试图找到那个实际的元素并移动它,但仍然没有。在真正的应用程序中,您只需点击屏幕并将该部分向左或向右移动。

标签: appium-android

解决方案


滚动不同于滑动。当您滚动页面时,您不会将手指从屏幕上松开,而是在滚动时松开手指,并且页面移动的速度更加可控。

所以对于滚动尝试:

String scrollViewContainer_finder = "new UiSelector().resourceIdMatches(\".*id/Your_ID\")"; // Your_ID=element resource-id
    String neededElement_finder = "new UiSelector().text(\"Your_Text\")";
    WebElement abc = driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(" + scrollViewContainer_finder + ")" +
            ".scrollIntoView(" + neededElement_finder + ")")); 

用您正在寻找的屏幕上的任何单词替换 Your-Text。对于其他元素选项看这个

刷卡:

方法:

    public void swipe(int startX, int startY, int endX, int endY, int msDuration) {
    TouchAction touchAction = new TouchAction((PerformsTouchActions) driver);
    touchAction.press(PointOption.point(startX, startY))
            .waitAction(WaitOptions.waitOptions(Duration.ofMillis(msDuration)))
            .moveTo(PointOption.point(endX, endY))
            .release();

示例用法:

swipe(600, 1750, 600, 400, 2000);

请注意:

  1. 要找到确切的开始和结束x,y:从设备/模拟器的“开发人员选项”中打开“显示指针位置”,然后您可以找到触摸屏幕任意位置的确切x,y。
  2. 为了更好的测试,您可以从开发者选项中关闭这些选项: 窗口动画比例/过渡动画比例/动画持续时间比例/
  3. 我发现正常的“msDuration”大约是 2000 毫秒。
  4. 对于任何滚动/滑动的使用,我强烈建议使用滑动方法。

推荐阅读