由于拼写更正,XCUIElement.typeText() 没有键入正确的文本。我能做什么?
XCUIElement.typeText() is not typing the correct text because of spelling correction. What can I do?
在我的 UI 测试中,我想在 table 单元格中的文本字段中键入一些文本。
所以我这样做了:
let textField = tablesQuery.elementBoundByIndex(index).textFields.elementBoundByIndex(0)
textField.tap()
textField.typeText("Snell's Law\r")
当我运行测试时,它成功找到了文本字段并开始输入。但不是键入 "Snell's Law",而是键入 "said last"!
我认为这是因为总是弹出烦人的拼写检查问题。
所以我进入设置,关闭拼写检查:
我运行 测试,看到它仍然键入"said last"!所以我回到设置并检查我是否已正确关闭拼写检查。
令我惊讶的是,拼写检查确实关闭了!发生了什么事?我怎样才能停止恼人的拼写检查?
该功能是自动更正,而不是物理设备上提供的拼写更正。为了防止文本字段显示自动更正选项,您应该在您的应用 code/storyboard 的文本字段上禁用该功能,如果这是一个可能不适合自动更正的字段,例如一个搜索字段。
自动更正适用于自然语言字段的流畅文本,但不适用于简单的短语。
您可以使用 SBTUITestTunnel。此框架扩展了 UI 测试添加的几个功能(网络模拟、远程代码调用),其中您还可以禁用 UI 特定测试的文本字段自动完成功能。
安装框架后,您将像这样在测试目标中启动应用程序:
func testExample() {
let app = SBTUITunneledApplication()
app.launchTunnelWithOptions([SBTUITunneledApplicationLaunchOptionDisableUITextFieldAutocomplete]) {
// do additional setup before the app launches, if needed
}
// From here on UITextField's autocomplete will be disabled
}
在我的 UI 测试中,我想在 table 单元格中的文本字段中键入一些文本。
所以我这样做了:
let textField = tablesQuery.elementBoundByIndex(index).textFields.elementBoundByIndex(0)
textField.tap()
textField.typeText("Snell's Law\r")
当我运行测试时,它成功找到了文本字段并开始输入。但不是键入 "Snell's Law",而是键入 "said last"!
我认为这是因为总是弹出烦人的拼写检查问题。
所以我进入设置,关闭拼写检查:
我运行 测试,看到它仍然键入"said last"!所以我回到设置并检查我是否已正确关闭拼写检查。
令我惊讶的是,拼写检查确实关闭了!发生了什么事?我怎样才能停止恼人的拼写检查?
该功能是自动更正,而不是物理设备上提供的拼写更正。为了防止文本字段显示自动更正选项,您应该在您的应用 code/storyboard 的文本字段上禁用该功能,如果这是一个可能不适合自动更正的字段,例如一个搜索字段。
自动更正适用于自然语言字段的流畅文本,但不适用于简单的短语。
您可以使用 SBTUITestTunnel。此框架扩展了 UI 测试添加的几个功能(网络模拟、远程代码调用),其中您还可以禁用 UI 特定测试的文本字段自动完成功能。
安装框架后,您将像这样在测试目标中启动应用程序:
func testExample() {
let app = SBTUITunneledApplication()
app.launchTunnelWithOptions([SBTUITunneledApplicationLaunchOptionDisableUITextFieldAutocomplete]) {
// do additional setup before the app launches, if needed
}
// From here on UITextField's autocomplete will be disabled
}