Java 应用程序:如何滑动左侧列表视图项

Java 应用程序:如何滑动左侧列表视图项,java,appium,ui-automation,Java,Appium,Ui Automation,我有一个android应用程序,其中我的活动包含列表视图。我正在处理自动测试用例,用于滑动删除列表视图项。我编写了以下代码来获取我的列表视图: List<WebElement> list = driver.findElements(By.id("com.xyz.email:id/conversation_list_view")); list.get(0).click(); 我有一个名为swipionElement的函数,它可以从右向左滑动项

我有一个android应用程序,其中我的活动包含列表视图。我正在处理自动测试用例,用于滑动删除列表视图项。我编写了以下代码来获取我的列表视图:

    List<WebElement> list = driver.findElements(By.id("com.xyz.email:id/conversation_list_view"));        
    list.get(0).click();
我有一个名为swipionElement的函数,它可以从右向左滑动项

    Dimension size = driver.manage().window().getSize();

    double endX = 0;
    double endY = 0;

    int elementX = element.getCenter().x;
    int elementY = element.getCenter().y;
    int finalX;
    int finalY;

    switch (direction) {
        case "left":
            endX = size.width;
            break;

        case "right":
            endX = 0;
            break;

        case "up":
            endY = 0;
            break;

        case "down":
            endY = size.height;
            break;
    }
    if (direction == "left" | direction == "right") {
        finalX = (int) endX;
        finalY = elementY;
    } else {
        finalX = elementX;
        finalY = (int) endY;
    }
    System.out.println("startY=" + elementY);
    System.out.println("startX=" + elementX);
    System.out.println("endY=" + finalY);
    System.out.println("endX=" + finalX);

    new TouchAction(driver)
            .press(element)
            .waitAction(300)
            .moveTo(finalX, finalY)
            .release()
            .perform();
    delay(1000);
这个函数很好。它工作得很好。但当我在列表视图项上尝试它时,它并没有按预期工作。我不知道它为什么会这样。请帮忙

试试看

swipeLeft(MobileElement mobileElement) {
        LOGGER.info("Swiping Left ...");
        Dimension size = getWindowSize();
        int x1 = (int) (size.width * 0.01);
         new TouchAction(driver).press(mobileElement).waitAction(Duration.ofSeconds(1)).moveTo(x1,0).release().perform();
    }
试一试


在这里,我找到了我的解决方案:

有一个名为TouchAction的类,您必须以函数链接的形式提供参数和调用的函数

new TouchAction(driver)
            .press(mobileElement)
            .waitAction(300)
            .moveTo(0,100)
            .release()
            .perform();

这里,驱动程序是AppiumDriver的对象,mobileElement是mobileElement的对象。moveTo功能就是完成整个刷卡操作的功能。刷卡需要起始位置和结束位置。

在这里,我找到了我的解决方案:

有一个名为TouchAction的类,您必须以函数链接的形式提供参数和调用的函数

new TouchAction(driver)
            .press(mobileElement)
            .waitAction(300)
            .moveTo(0,100)
            .release()
            .perform();

这里,驱动程序是AppiumDriver的对象,mobileElement是mobileElement的对象。moveTo功能就是完成整个刷卡操作的功能。刷卡需要起始位置和结束位置。

有时向元素的最后一个像素发出命令可能会出错。我不知道它是否能解决您的问题,但请尝试将您的最终值设置为1而不是0?@MikeCollins您在谈论哪些最终值?你是说最后一次,最后一次?是的。不太可能解决我们的问题,但非常简单,可以尝试,而且我可以看到一些可能导致问题的东西。尝试使用带MobileBy.AndroidUIAutomator定位器的UiScrollable。有时向元素的最终像素发出命令可能会有问题。我不知道它是否能解决您的问题,但请尝试将您的最终值设置为1而不是0?@MikeCollins您在谈论哪些最终值?你是说最后一次,最后一次?是的。不太可能解决我们的问题,但足够简单,可以尝试,并且我可以看到一些可能导致问题的东西。尝试将UiScrollable与MobileBy.AndroidUIAutomator定位器一起使用。