【问题标题】:How to scroll page by using TouchActions appium method?如何使用 TouchActions appium 方法滚动页面?
【发布时间】:2019-01-22 09:23:15
【问题描述】:

我为 Android 原生应用程序编写了自动化测试,但遇到了滚动问题。

我需要滚动 Android 应用程序页面,并为此搜索下一个方法:http://appium.io/docs/en/commands/interactions/touch/scroll/

TouchActions action = new TouchActions(driver);
action.scroll(element, 10, 100);
action.perform();

但在第一行我得到一个异常“java.lang.ClassCastException: io.appium.java_client.android.AndroidDriver cannot be cast to org.openqa.selenium.interactions.HasTouchScreen”

我的环境是:java、jdk 1.8.0_65、appium 1.6.1

附:我尝试使用 TouchAction - 从这些 Automating mobile gestures 中,它可以工作,但方法已被弃用。

.press(100,100) 
.moveTo(100,100)

附言我也尝试执行 adb 命令,像这样:

  "adb -s shell input touchscreen swipe " + startx + " " + starty + " " + endx + " " + endy + " " + duration"

但这对我也不起作用,如果可能的话,我当然想使用原生 appium 方法。

【问题讨论】:

    标签: java scroll appium appium-android


    【解决方案1】:

    确保您从 io.appium.java_client.TouchAction

    导入了 TouchAction
    import io.appium.java_client.TouchAction;
    import io.appium.java_client.touch.WaitOptions;
    import io.appium.java_client.touch.offset.PointOption;
    import java.util.concurrent.TimeUnit;
    import static java.time.Duration.ofSeconds;
    
    TouchAction action = new TouchAction(driver); 
    action.press(PointOption.point(115, 650)).waitAction(WaitOptions.waitOptions(ofSeconds(1)))
                    .moveTo(PointOption.point(115, 350)).release().perform();
    

    更新:您需要将 selenium-java 版本升级到最新的稳定版本

    import org.openqa.selenium.interactions.touch.TouchActions;
    
    //AppiumDriver<WebElement> driver;
    TouchActions action1=new TouchActions(driver);
        action1.scroll(element,x1,x2).perform();
    

    【讨论】:

    • TouchActions 不是 TouchAction。这些是不同的库。实际上 TouchAction - 我试过了,它工作正常,但方法已被弃用(moveTo)请参阅我的主题。但是 TouchActions - 有滚动方法,我想使用,但在初始化 TouchActions 对象行时出错
    【解决方案2】:

    这是完美运行的命令。

         TouchAction action = new TouchAction(driver); 
                 action.press(PointOption.point(115, 915)).waitAction(WaitOptions.waitOptions(Duration.ofSeconds(3)))
                                 .moveTo(PointOption.point(115, 150)).release().perform();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 2018-01-01
      • 2019-01-10
      • 2016-01-17
      • 2018-07-05
      • 2013-11-17
      • 2017-11-01
      相关资源
      最近更新 更多