【问题标题】:Android: Press Done Button on KeyboardAndroid:按键盘上的完成按钮
【发布时间】:2015-04-06 15:38:00
【问题描述】:

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

【问题讨论】:

  • 你试过KEYCODE_ENTER吗? adb shell input keycode 66 (developer.android.com/reference/android/view/…)
  • 是的,试过了,没用,是回车...我在找完成按钮..
  • 应该是这个:FLAG_EDITOR_ACTION(developer.android.com/reference/android/view/…)
  • FLAG_EDITOR_ACTION 的 adb 命令是什么?我试过“adb shell input keyevent FLAG_EDITOR_ACTION”,但看起来不起作用
  • 即使 KEYCODE_9 的常量值为 16,所以当我输入值为 16 的 adb 命令时,它正在按下键盘上的“9”键..

标签: java android android-activity appium


【解决方案1】:

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

【讨论】:

  • 您能否详细说明如何实施您的解决方案?还是只是用两根手指敲击的手动操作?
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    在我的 Pixel 3 上,我通过以下命令使用 adb 自动点击了“搜索/下一步/完成”按钮:

    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 中,但这不适用于我正在测试的应用程序。不知道为什么。

    【讨论】:

      【解决方案4】:

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

      adb shell input keyevent 61
      

      然后:

      adb shell input keyevent 66
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-21
        • 1970-01-01
        • 2017-04-13
        • 2023-03-09
        • 2023-04-04
        • 2015-01-03
        相关资源
        最近更新 更多