Android:按键盘上的完成按钮

时间:2015-02-06 13:19:00

标签: java android android-activity appium

使用appium进行Android应用程序自动化。无法单击手机键盘上显示的“完成”按钮。有人可以帮助我们使用ADB Shell命令点击Android手机完成按钮吗?

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

adb shell input tap 1070 1940

x,y坐标将根据您的设备而有所不同。大致了解从何处开始,您可以使用adb确定您的屏幕尺寸,然后从右下角上下移动。因此,在Pixel 3上,我使用了以下adb命令来确定窗口大小:

adb shell wm size

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

因此,现在我可以在文本字段中输入搜索字符串,并用类似以下的方法模拟点击软键盘上的搜索键:

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

这是所有必要的操作,因为我使用的搜索框是具有此XML属性的Android EditText,用于指示应将标准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中,但不适用于我正在测试的应用程序。不知道为什么。

答案 3 :(得分:0)

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

adb shell input keyevent 61

那么:

adb shell input keyevent 66