我正在为视图编写XCUITests,该视图具有2个UITextField,并且通过默认设置,模拟器已连接了硬件键盘,因此未提供该软件。
是否可以设置一些设置(也许在模式中?)以在测试运行之前通过模拟器强制禁用连接硬件键盘。
我通过的链接很少,但似乎没有帮助。 iOS simulator - disable connect hardware keyboard programmatically
Disable Hardware Keyboard for iOS Simulator using UIAutomation
当我在xcode local上尝试此方法时,它可以工作,但是,XCUItest在CI上运行,并且在测试执行开始之前,我为此快速启动文件配置了这个快速键盘文件。 但这会引发错误
设置:条目,“:DevicePreferences :: ConnectHardwareKeyboard “,不存在
任何帮助将不胜感激
答案 0 :(得分:3)
经历了同样的问题。找到了一个简单的解决方案,可以在UI测试方案中添加规定。
首先,这是使用Xcode打开的plist文件的图像。该文件位于〜/ Library / Preferences / com.apple.iphonesimulator.plist
现在这是我添加到ui测试方案中的规范。阅读脚本中的注释以获取进一步的解释。
killall Simulator
defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
工作方式 首先,模拟器被杀死。接下来,“默认值”命令将键/值写入模拟器的plist。现在,当测试开始时,他们将启动模拟器,该模拟器将考虑我们在plist中编写的值。
希望它也对您有用。 :)
答案 1 :(得分:1)
要禁用iOS 模拟器的Connect Hardware Keyboard
设置(模拟器->硬件->连接硬件键盘),请在 AppDelegate 中添加此截图强>。 ref link
#if targetEnvironment(simulator)
// Disable hardware keyboards.
let setHardwareLayout = NSSelectorFromString("setHardwareLayout:")
UITextInputMode.activeInputModes
// Filter `UIKeyboardInputMode`s.
.filter({ $0.responds(to: setHardwareLayout) })
.forEach { $0.perform(setHardwareLayout, with: nil) }
#endif