gpt4 book ai didi

ios - 是否可以通过 UI 测试中的代码返回 "toggle software keyboard"?

转载 作者:技术小花猫 更新时间:2023-10-29 10:06:53 29 4
gpt4 key购买 nike

我有测试登录功能的 UI 测试(并用它来测试其他东西),但有时当焦点从一个字段更改到另一个字段时 - 键盘隐藏,虽然光标在该字段中闪烁,但我收到错误在 field.typeText 上 - 没有要填写的焦点字段

不知何故,我意识到,点击 Hardware -> Keyboard -> toggle software keyboard 会使键盘持续显示在屏幕上,因此测试运行良好。但我需要让它在任何测试设备、任何开发人员机器上运行,所以我想以编程方式设置此选项,而不会在项目的自述文件中烦人地“如果测试失败,请转到……并手动设置……”。

这可能吗?

最佳答案

在 Xcode 10.3 和 Xcode 11 中测试。下面的代码片段需要位于应用程序目标中(不是测试包)——例如,在 AppDelegate.swift .通过将任何 UIKeyboardInputModeautomaticHardwareLayout 属性设置为 nil,它将禁止任何硬件键盘自动连接。

🔥 Does not depend on the settings of the Simulator.

#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

或者 Objective-C:

#if TARGET_IPHONE_SIMULATOR
SEL setHardwareLayout = NSSelectorFromString(@"setHardwareLayout:");
for (UITextInputMode *inputMode in [UITextInputMode activeInputModes]) {
if ([inputMode respondsToSelector:setHardwareLayout]) {
// Note: `performSelector:withObject:` will complain, so we have to use some black magic.
((void (*)(id, SEL, id))[inputMode methodForSelector:setHardwareLayout])(inputMode, setHardwareLayout, NULL);
}
}
#endif

关于ios - 是否可以通过 UI 测试中的代码返回 "toggle software keyboard"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38010494/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com