【发布时间】:2016-06-09 01:42:24
【问题描述】:
在我的 UI 测试中,我将两个 UiObject 的文本设置在屏幕顶部附近,然后单击位于屏幕底部附近的第三个 UiObject。在某些设备上(例如我运行 5.0 的 Nexus 6),这可以完美运行。文字设置好了,屏幕下方的UiObject依然可见,点击成功。
在其他设备上(例如,我的 Nexus 4 运行 4.4)在 UiObjects 上调用 setText 会调出软键盘,这会遮挡屏幕底部附近的第三个 UiObject 并阻止它被点击。
我考虑使用UiDevice.pressBack() 关闭键盘,但问题是键盘在某些设备上显示,而在其他设备上不显示。在不显示键盘的设备上按回会导致其他行为,从而导致测试失败。
我还考虑使用UiDevice.pressEnter() 作为解决方案。我认为如果键盘可见,这将关闭键盘,如果不可见,则什么也不做(两全其美)。问题是,UiAutomator 在运行我的测试时显示的键盘没有“输入”按钮,它有一个“下一步”按钮。这与我在代码中设置实际 UI 元素的方式相反。当我手动测试时,键盘按预期显示“输入”按钮。但是,由于 UiAutomator 看到的是“下一步”按钮,这就是它正在执行的功能。焦点只是传递到下一个 UiObject 并且键盘仍然可见。
所以我要做的是在键盘可见时将其关闭,如果不可见,则无需冒险按下后退按钮。有没有办法确定它是否显示?或者更好的是,从一开始就不要展示它?
【问题讨论】:
标签: android android-uiautomator