Xcode XCUITest - 使用 typeText 时在 searchField 中输入了额外的字符

Xcode XCUITest - extra characters entered into searchField when using typeText

我在 Xcode (XCUITests) 中有一个测试,它使用 typeText 将字符串输入到搜索字段中。对于我们的测试,我们首先在 searchField 中点击 2 次。然后,我们做:

searchField.typeText(ourStringHere + "\n")

当该行运行时,它会额外键入第一个字符 2 次。所以,如果我们传入 "tree",它将输入 "tttree"。这显然会导致我们的测试失败。

在我们正在测试的应用程序的这个屏幕上,我们会根据您键入的匹配项进行操作。因此,在键入第一个字符后,会显示一些结果。我相信这会导致超时问题。 然后 Xcode 正在尝试再次输入整个单词。我相信这也会发生两次。在第三次尝试时,屏幕已经稳定下来,显示它的背景操作和它随后成功输入的单词。

如果有某种方法可以覆盖 typeText() 以删除它之前尝试过的任何内容,那将会很有帮助。此外,在键入字符时在字符之间添加一些停顿也会有所帮助。然后我们可以让测试等待后台操作显示所有结果,然后键入下一个字母。

除此之外,我不知道如何解决这个问题。

根据你的先决条件,我认为你应该粘贴文本而不是键入(但如果你 运行 并行测试有点不安全)

let pasteMenuItem = app.menuItems.firstMatch
UIPasteboard.general.string = "Preparing Pasteboard"

searchField.tap()
searchField.tap()
_ = pasteMenuItem.waitForExistence(timeout: 5)
UIPasteboard.general.string = ourStringHere + "\n"
pasteMenuItem.tap()

此外,请查看此处的评论 typeText() is typing inconsistent characters 以了解打字速度较慢的问题。