使用 AndroidViewClient 长按视图

Posted

技术标签:

【中文标题】使用 AndroidViewClient 长按视图【英文标题】:Long press on a view using AndroidViewClient 【发布时间】:2014-06-09 12:39:26 【问题描述】:

如何使用androidViewClient 模拟长按视图(例如按钮)? ViewClient 的 touch 方法总是对其输入执行简单的按下(即使我将 type 参数设置为 adbClient.DOWN

编辑: adbclient.py 中的 touch 方法有一个 type 参数,但它没有在方法体中使用。在MonkeyRunner中,当类型为DOWN时,执行长按。

def touch(self, x, y, eventType=DOWN_AND_UP):
    self.shell('input tap %d %d' % (x, y))

【问题讨论】:

你试过longPress()方法而不是press()吗? 是的。我测试了一下,不知道为什么和 press() 方法很像。 嗯,让我们问问@dtmilano。我刚刚通过 Google+ 与他分享了这个。 【参考方案1】:

我现在找到了我的问题的答案。我们可以使用拖动方法来模拟长按视图。示例代码如下:

buttonText = 'ClMe'
button = vc.findViewWithText(buttonText )
(x,y) = button.getXY()
button.device.drag((x,y), (x,y), 2000, 1)

【讨论】:

【参考方案2】:

来自adbclient.py

    version = self.getSdkVersion()
    if version >= 19:
        cmd = 'input keyevent --longpress %s' % name
        if DEBUG:
            print >> sys.stderr, "longPress(%s)" % cmd
        self.shell(cmd)
    else:
        raise RuntimeError("longpress: not supported for API < 19 (version=%d)" % version)

API >= 19 支持 Longpress。

【讨论】:

感谢 dtmilano。我认为这种方法不适用于按钮和其他视图。如何使用这个模拟长按按钮?

以上是关于使用 AndroidViewClient 长按视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AndroidViewClient 连接多个设备

python MonkeyRunner和AndroidViewClient示例。检测呼叫是否即将到来。

在列表视图上长按事件后创建菜单

在视频视图中检测双击(双击)或长按

在地图视图上长按触发推送 segue

如何检测任何视图的长按位置?