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

UI Automator with custom keyboard. Find exact keyboard button and click it

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

问题:

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

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

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

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

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

由于您正在构建自定义软键盘,因此我希望您使用的是 KeyboardViewKeyboardView 使用 canvas 绘制密钥,因此无法获取密钥的资源 ID...因此无法通过 UiDevice 的 [=13= 找到它们]方法。

考虑到 KeyboardView class 自 API 29 以来已被弃用,一个可能的解决方案是重新实现您自己的 KeyboardView(建议 here)并使用 AccessibilityNodeInfo class 构建将包含在视图层次结构中的虚拟元素(每个键一个)。