我有测试登录功能的UI测试(并使用它来测试其他东西),但有时当焦点从一个字段切换到另一个字段时-键盘隐藏,尽管光标在字段中 Flink ,但我在field.typeText
-no focused fields to fill
上得到错误。
不知何故我意识到,点击Hardware -> Keyboard -> toggle software keyboard
会使键盘停留在屏幕上,所以test is工作得很好,但我需要使它在任何测试设备上,在任何开发人员的机器上工作,所以我想通过编程设置这个选项,而不需要在项目的自述文件中烦人的"如果测试失败,转到...并手动设置..."。
有可能吗?
7条答案
按热度按时间7y4bm7vi1#
在Xcode 10.3和Xcode 11中测试。以下代码片段需要位于应用目标中(不是测试包)-例如,位于 AppDelegate.swift 中。它将通过将任何
UIKeyboardInputMode
的automaticHardwareLayout
属性设置为nil
来禁用任何硬件键盘的自动连接。🔥 不取决于模拟器的设置。
或者Objective-C:
utugiqy62#
模拟器的.plist文件已更改,以添加对多个模拟器的支持。ConnectHardwareKeyboard布尔值现在嵌套在设备的UDID之下。幸运的是,此UDID也存储在plist文件中。您可以在UITest目标的构建阶段下使用“运行脚本”添加此代码。
Xcode 9答案:
或者,您可以使用以下代码来影响所有模拟器:
lvmkulzt3#
在Xcode 9之前,您可以通过在www.example.com中禁用硬件键盘来解决此Simulator.app,这将导致软件键盘始终存在。
7kjnsjlb4#
根据布鲁克斯的回答,这将适用于所有模拟器:
93ze6v8z5#
我用Xcode 10.1进行了测试,尝试了不同的方法,但都没有解决如何获得模拟器UDID的问题
您也可以验证这些更改。
查找您的模拟器UDID:(更多信息请访问:https://nshipster.com/simctl/)
运行以下命令之一,并根据上面的UDID查找更改:
xlpyo6sf6#
受真实的_kappa_guy的answer启发,我检查键盘是否已启用,然后运行苹果脚本发送键盘快捷键Cmd-shift-k(需要添加到预测试操作中),从而在不重启模拟器的情况下成功完成此操作:
nxagd54h7#
对于Xcode 10.2,这些解决方案对我来说都不起作用,
plist
被正确地修改了,但是键盘仍然隐藏着。如果键盘没有显示,我必须使用osascript在模拟器上按Ctrl + Shift + K。这不是很漂亮,但这是唯一有效的解决方案。