带有自定义键盘的 UI Automator。找到确切的键盘按钮并单击它

问题描述 投票:0回答:3

我正在尝试使用 UI Automator 和/或 Espresso 为自定义软键盘编写 UI 自动化测试。尝试了不同的方法,但我找不到正确的解决方案来“找到打开的键盘上的确切按钮并单击它”。

问题:

  1. UIAtomator 的
    UiDevice.findObject(By.text("Q")).click()
    在键盘上找不到 Q 按钮。
  2. Espresso 的
    onView(withText("Q")).perform(click())
    也找不到按钮。

目前看来,单击按钮的唯一方法是根据屏幕高度和键盘高度测量 XY 坐标。但这个解决方案很丑陋而且不持久。

typeText("text")
uiObject.text = "text"
不起作用,因为它绕过键盘输入。

有人使用自定义键盘吗?请帮忙。

android android-espresso ui-automation android-uiautomator
3个回答
1
投票

既然您正在构建自定义软键盘,那么我希望您使用

KeyboardView
KeyboardView
使用画布绘制键,因此不可能获取键的资源 id...因此没有机会通过
UiDevice
findObject
方法找到它们。

考虑到

KeyboardView
类自 API 29 起已被弃用,一种可能的解决方案是重新实现您自己的
KeyboardView
(如此处建议)并使用
AccessibilityNodeInfo
类构建虚拟元素(每个键一个),这将被包含到视图层次结构中。


0
投票

我认为最好的解决方案是创建自己的 TCP 服务器来解决这个问题。请参阅此链接了解如何操作:https://ops.tips/blog/a-tcp-server-in-c/


0
投票

使用这个:

   val device = UiDevice.getInstance(getInstrumentation())
    device.pressEnter()
© www.soinside.com 2019 - 2024. All rights reserved.