Nit*_*rma 9 testing ios swift xcuitest
我正在为视图编写 XCUITests 有 2 个 UITextField 并且默认情况下模拟器连接了硬件键盘,因此没有显示软件一个。
是否可以在测试运行之前设置一些设置(可能在架构中?)以强制禁用模拟器连接的硬件键盘。
我浏览了几个链接,但似乎没有一个有帮助。 iOS 模拟器 - 以编程方式禁用连接硬件键盘
使用 UIAutomation 禁用 iOS 模拟器的硬件键盘
当我在本地 xcode 上尝试它时,它可以工作,但是,XCUItest 在 CI 上运行,并且我在测试执行开始之前为此调用的启用键盘脚本配置了 fastlane 文件。但它抛出错误
设置:条目,“:DevicePreferences::ConnectHardwareKeyboard”,不存在
任何帮助将非常感激
经历了同样的问题。找到了在 UI 测试方案中添加规定的简单解决方案。
首先,这是用 Xcode 打开的 plist 文件的图像。这位于 ~/Library/Preferences/com.apple.iphonesimulator.plist
现在这是我添加到我的 ui 测试方案中的处方。阅读脚本中的注释以获得进一步的解释。
killall Simulator
defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
Run Code Online (Sandbox Code Playgroud)
它 是如何工作的首先模拟器被杀死。接下来,“defaults”命令将键/值写入模拟器 plist。现在,当测试开始时,他们会启动模拟器,该模拟器会考虑我们在 plist 中写入的值。
希望它也适用于你。:)
要禁用 iOS模拟器的Connect Hardware Keyboard设置(Simulator -> Hardware -> Connect Hardware Keyboard ),请在AppDelegate中添加此 sniped 。参考链接
#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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4639 次 |
| 最近记录: |