Android:按下键盘上的完成按钮

Android: Press Done Button on Keyboard

使用 appium android 应用自动化。无法单击 phone 键盘上显示的 "Done" 按钮。有人可以帮助我们使用 ADB Shell 命令点击 Android phone 完成按钮吗?

似乎没有建设性的方法来点击设备键盘上的“完成”或“下一步”按钮。因此,作为一个临时解决方案,我用两根手指点击“完成”按钮坐标,但这不是一个可行的解决方案。将等到 appium 在下一个版本中对此进行修复。

在我的 Pixel 3 上,我通过以下命令使用 adb 自动点击 Search/Next/Done 按钮:

adb shell input tap 1070 1940

x,y 坐标会因您的设备而异。要大致了解从哪里开始,您可以使用 adb 确定屏幕大小,然后从右下角向上移动。所以,在我的 Pixel 3 上,我使用这个 adb 命令来确定 window size:

adb shell wm size

这给了我这个输出:“物理尺寸:1080x2160”。我从右侧向内移动了 10 个像素,从底部向上移动了 180 像素以获得适合我的“1070 1940”x,y 坐标。

所以现在我可以在文本字段中输入搜索字符串,然后使用类似这样的方式模拟点击软键盘上的搜索键:

adb shell input text searchterm && adb shell input tap 1070 1940

这一切都是必需的,因为我使用的搜索框是一个 Android EditText,它具有此 XML 属性以指示标准 Enter 键应替换为搜索图标:

android:imeOptions="actionSearch"

如果不是这种情况,我相信我可以为 Enter 键发送标准的 KeyEvent:

adb shell input keyevent 66

启用 IME 搜索选项后,我相信您必须发送 KeyEvent.KEYCODE_ENTER(即 66)以及 FLAG_EDITOR_ACTION(掩码值为 16),但它不会看来 adb shell 输入支持添加标志。

我试过发送 KEYCODE_SEARCH(即 84),它自版本 1 以来一直存在于 Android API 中,但这在应用程序上不起作用我正在测试。不知道为什么。

在Android中,您不能直接点击键盘按键,除非您使用Appium 坐标执行click/tap 并不总是可靠的操作。但是您可以使用 Appium 在 android 上模拟硬件键。

要按下(模拟)完成按钮,请使用以下代码:

driver.pressKey(new KeyEvent(AndroidKey.ENTER));

作为间接解决方案,我使用 key_event TAB (61) 将焦点切换到操作按钮,然后我发送 key_event ENTER (66)

adb shell input keyevent 61

然后:

adb shell input keyevent 66