如何使用adb shell输入文本输入OK键?

SF.*_*SF. 6 android adb

我可以将文本输入到一个adb shell input text "blahblah"很好的对话框中.文字出现了......坐在那里.

我可以在OK按钮的COORDS发送自来水,实际上具有文本采取我进入这一切对话框中的效果 - 如果我猜的屏幕方向正确,适应当前的分辨率,适应当前的键盘变种等.非常笨重.

是否有一些神奇的字符或键码或其他一些巧妙的方式让shell执行相当于按"OK"?

例

在上面的屏幕截图中,它是->| 右下方的绿色图标.它有时会随着使用的确切字段而变化,但含义总是相同的:关闭键盘然后继续.

TDG*_*TDG 10

我相信你在寻找adb shell input keyevent 66.
keyevent是使用用于按压虚拟键盘的键,并且代码66是用于ENTER键.
你可以在这里找到代码列表.

编辑 键和代码之间的映射可以在以下位置找到/system/usr/keylayout/qwerty.kl.您可以adb shell cat /system/usr/keylayout/qwerty.kl查看所需的代码.


Die*_*ano 2

您可以使用AndroidViewClient/culebra并忘记方向、不同的屏幕尺寸等。

举个例子,假设我们要在此对话框中输入文本并按“确定” (Api 演示的一部分)

在此输入图像描述

赶紧跑

culebra -uGo myscript.py
Run Code Online (Sandbox Code Playgroud)

当窗口显示时,单击条目,输入文本,然后单击“确定”,该脚本将自动生成

#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''
Copyright (C) 2013-2016  Diego Torres Milano
Created on 2016-06-10 by Culebra v11.5.8
                      __    __    __    __
                     /  \  /  \  /  \  /  \ 
____________________/  __\/  __\/  __\/  __\_____________________________
___________________/  /__/  /__/  /__/  /________________________________
                   | / \   / \   / \   / \   \___
                   |/   \_/   \_/   \_/   \    o \ 
                                           \_____/--<
@author: Diego Torres Milano
@author: Jennifer E. Swofford (ascii art snake)
'''


import re
import sys
import os


try:
    sys.path.insert(0, os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
    pass

from com.dtmilano.android.viewclient import ViewClient

TAG = 'CULEBRA'

_s = 5
_v = '--verbose' in sys.argv


kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False}
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1)
kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': False, 'ignoreuiautomatorkilled': True, 'autodump': False, 'startviewserver': True, 'compresseddump': True}
vc = ViewClient(device, serialno, **kwargs2)
#vc.dump(window='-1') # FIXME: seems not needed

vc.dump(window=-1)
vc.findViewByIdOrRaise("com.example.android.apis:id/username_edit").setText(u"hello culebra!")
vc.sleep(_s)
vc.dump(window=-1)
vc.findViewWithTextOrRaise(u'OK').touch()
Run Code Online (Sandbox Code Playgroud)

运行时,会将文本设置为hello culebra!并触摸“确定”。然后,您可以根据您的需要调整生成的脚本。

库莱布拉测试仪

CulebraTester 是culebra作为在测试设备上运行的服务的新实现。目前正在进行封闭测试,但如果您有兴趣参与,可以在culebra.dtmilano.com上找到选择加入表格(在“支持”下查看)。

它的功能之一是能够检测虚拟键盘并将其与其他视图一样对待。

在此输入图像描述

此屏幕截图说明了触摸 A、b、c 和下一步(这就是您正在寻找的内容)后生成的测试。

生成的测试是这样的

/**
 * @@Test comment here@@
 *
 * @throws Exception
 */
@Test
public void culebraGeneratedTest() throws Exception {
    mDevice.findObject(By.clazz(Pattern.compile(".*")).desc("A").pkg("com.android.inputmethod.latin")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
    mDevice.findObject(By.clazz(Pattern.compile(".*")).desc("b").pkg("com.android.inputmethod.latin")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
    mDevice.findObject(By.clazz(Pattern.compile(".*")).desc("c").pkg("com.android.inputmethod.latin")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
    mDevice.findObject(By.clazz(Pattern.compile(".*")).desc("Next").pkg("com.android.inputmethod.latin")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
}
Run Code Online (Sandbox Code Playgroud)

您可以像任何其他 UiAutomator 测试一样编译、安装和运行。

作为另一个示例,此屏幕截图显示了当您将虚拟键盘视图悬停在树中时,它们如何在设备表示中突出显示

在此输入图像描述

  • 这在虚拟键盘上是不行的。请参阅我的澄清编辑。 (2认同)