以编程方式禁用 iOS 模拟器“连接硬件键盘”

Nit*_*rma 9 testing ios swift xcuitest

我正在为视图编写 XCUITests 有 2 个 UITextField 并且默认情况下模拟器连接了硬件键盘,因此没有显示软件一个。

是否可以在测试运行之前设置一些设置(可能在架构中?)以强制禁用模拟器连接的硬件键盘。

我浏览了几个链接,但似乎没有一个有帮助。 iOS 模拟器 - 以编程方式禁用连接硬件键盘

使用 UIAutomation 禁用 iOS 模拟器的硬件键盘

当我在本地 xcode 上尝试它时,它可以工作,但是,XCUItest 在 CI 上运行,并且我在测试执行开始之前为此调用的启用键盘脚本配置了 fastlane 文件。但它抛出错误

设置:条目,“:DevicePreferences::ConnectHardwareKeyboard”,不存在

任何帮助将非常感激

Has*_*Ali 8

经历了同样的问题。找到了在 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 中写入的值。

希望它也适用于你。:)

  • 这似乎不再起作用了。它杀死了模拟器但不影响键盘。钥匙变了吗?你有更新的脚本吗? (3认同)
  • 如果测试从 XCode 运行它可以工作,但如果从 fastlane 运行则失败 (2认同)
  • 同意。从快速通道失败 (2认同)

Öme*_*ürk 8

要禁用 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)

  • 这对我来说一直有效,直到 Xcode 14 - 现在正在寻找替代方案。 (5认同)

归档时间:

查看次数:

4639 次

最近记录:

5 年,6 月 前