【问题标题】:How can multi-touch be used in uiautomator?uiautomator中如何使用多点触控?
【发布时间】:2013-03-06 22:52:04
【问题描述】:

我还没有找到任何方法在 uiautomator 测试中自动执行多点触控操作

鉴于它是 com.android.uiautomator.* 类的框架,我该如何自动化多点触控动作?

【问题讨论】:

  • 看起来您可以结合使用 InputManager.getInstance().injectInputEvent() 和 MotionEvent.obtain() 来创建这种基础设施。我还没有找到任何自动执行此操作的方法,因此我接受以下答案。
  • 请阅读更新后的文档自Android API Level 18:developer.android.com/tools/help/uiautomator/UiObject.html我认为performMultiPointerGesture函数应该是你的答案。

标签: android integration-testing android-uiautomator


【解决方案1】:

2017 年 3 月 1 日更新 当我第一次回答这个问题时,Android-17 的当前文档,例如http://developer.android.com/tools/help/uiautomator/UiObject.html 似乎没有提供任何方式来提供多点触控或其他复杂手势,例如捏合和缩放。

不过正如@Project 所指出的,现在支持多点触控手势。 https://developer.android.com/reference/androidx/test/uiautomator/UiObject#performmultipointergesture

在这个阶段我还没有测试过这个功能。

【讨论】:

  • 我会 +1 你的回复,但我想再等一会儿再接受它:)
  • 只要您需要,请稍等 :) 让我们希望 Google 通过提供功能来证明我们俩都错了!
  • 这个答案不再正确。建议更新,因为这是公认的答案。
【解决方案2】:

在 android API 级别 18 中,android UiObject 已经为这种多点手势提供了 api。 check here

【讨论】:

    【解决方案3】:

    您可以使用 pinchOut / pinchIn 方法来进行缩小和放大。如果您想要更细粒度的控制,也可以使用 JulianHarty 指出的多点触控手势。

    UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
            device.findObject(uiSelector).pinchOut(percent, steps);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2023-04-03
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多