由于拼写更正,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   
}