使用uiautomator for Android,我可以在文本字段中设置文本,但无法关闭键盘。对于一些手机,当处于景观模式时,键盘占据了整个屏幕,必须点击“完成”才能退出该视图。如果我可以抑制键盘,那么我可以在横向和纵向都运行uiautomator没有问题。
new UiObject(new UiSelector().text("Enter Text")).click();
new UiObject(new UiSelector().className("android.widget.EditText").instance(0)).setText("sample text");
// This is where I need to suppress the keyboard to view the app instead of just the keyboard itself.
new UiObject(new UiSelector().text("Submit")).click();
先谢谢你了。
6条答案
按热度按时间gt0wga4j1#
这是一个相当古老的问题,但使用UiAutomator 2.0可以正确和完整地回答这个问题,因此它在这里。
最优方案为:
但到目前为止,问题是如何实现isKeyboardOpened()。
由于UiAutomator 2.0基于仪器,因此我们可以访问UiAutomation,我们可以验证屏幕上是否存在任何输入窗口:
在初始化代码的某个地方,请确保执行以下代码,否则
.getWindow()
将始终返回空列表:z2acfund2#
这似乎是错误的,但它完成了工作。
lokaqttq3#
通常单击后退键将关闭键盘。
rmbxnbpk4#
我用了你的代码,只是在插入文本的末尾添加了\n。这模拟'回车',但键盘仍然出现,所以你需要按Back()键关闭键。
还有更优雅的解决方案:
wn9m85ua5#
最后经过大量的工作,我找到了遵循的方式来做到这一点。问题是如果没有显示软键盘,调用
getUIDevice().pressBack()
可能会中断测试。如果显示键盘,则只会按回。
xa9qqrwz6#
尝试
DummyIME
并运行带有-e disable_ime true
选项的uiautomator
工具。DummyIME
驻留在Android git repository中。DummyIME
的克隆源代码:1.构建并安装
DummyIME
(您可以更改android-18
):1.使用带有
-e disable_ime true
选项的uiautomator框架运行测试。请注意,您必须在测试设备中恢复默认IME的设置,因为在运行测试后,它会自动更改为
DummyIME
。