在 Android 应用中使用 Appium 定位元素后,如何水平滑动?

Posted

技术标签:

【中文标题】在 Android 应用中使用 Appium 定位元素后,如何水平滑动?【英文标题】:How can i swipe horizontally after locating an element using Appium in an Android app? 【发布时间】:2016-03-22 07:42:46 【问题描述】:

我使用了以下代码,但它不起作用:

int startX = driver.findElement(By.xpath("//*[@class='android.widget.FrameLayout' and @index='1']")).getLocation.getX();
int startY = driver.findElement(By.xpath("//*[@class='android.widget.FrameLayout' and @index='1']")).getLocation.getY();

我得到的错误是:

getLocation cannot be resolved or is not a field

【问题讨论】:

使用Swipe方法刷屏。 【参考方案1】:

首先,您应该尝试将位置设为getLocation(),而不是:.getLocation.getY()

其次,您可以使用以下方式实现全方位的滑动/滚动:

TouchAction action = new TouchAction(driver);

        int startY = element1.getLocation().getY() + (element1.getSize().getHeight() / 2);
        int startX = element1.getLocation().getX() + (element1.getSize().getWidth() / 2);

        int endX = element2.getLocation().getX() + (element2.getSize().getWidth() / 2);
        int endY = element2.getLocation().getY() + (element2.getSize().getHeight() / 2);

        action.press(startX, startY).waitAction(2000).moveTo(endX, endY).release().perform();

【讨论】:

谢谢,但它告诉我在类级别拉@Test Annotation,然后我把它告诉我注释应该在那个方法中!问题出在这行 TouchAction action = new TouchAction(driver);还有 action.press(startX, startY).waitAction(2000).moveTo(endX, endY).release().perform();它告诉我:添加演员阵容 请提供代码片段和具体错误。确保您已导入: import io.appium.java_client.TouchAction;还可以考虑使用页面对象模式:code.google.com/p/selenium/wiki/PageObjects 并在不同的类中编写测试用例,然后从另一个类运行它们(在这里你可以使用@Test Annotation)。 嗨,我如何从右 WebElement 水平滑动到最左 WebElement? 我们可以用窗口大小而不是元素引用来处理这个问题吗? 为了从左向右滑动需要交换startx,starty从press到moveto。 endx 反之亦然,endy 从 moveto 到 press。【参考方案2】:
public void horizontalScroll()

    size=driver.manage().window().getSize();
    int x_start=(int)(size.width*0.60);
    int x_end=(int)(size.width*0.30);
    int y=130;
    driver.swipe(x_start,y,x_end,y,4000);

理解水平滚动的最佳教程 - CLICK HERE

【讨论】:

@anuja Jain:刷卡方法已被弃用,现在不起作用。请参阅此链接以获取更多更新:appium.github.io/java-client/io/appium/java_client/…

以上是关于在 Android 应用中使用 Appium 定位元素后,如何水平滑动?的主要内容,如果未能解决你的问题,请参考以下文章

appium应用之“获取元素信息和元素操作”(android)

定位器不起作用,除了 WebView 中 Appium for Android 上的 id

APPIUM Android 定位方式

六 APPIUM Android 定位方式

七 APPIUM Android 定位方式

无法找到在 Appium android 中动态生成的元素