每次 Apple 发布新的 XCode 版本时,我的 UI 测试都会失败

Every time Apple release a new XCode version my UI tests fail

每次 Apple 发布新的 XCode 版本时,我的 UI 测试都会失败。我需要花几天时间弄清楚测试中需要更改的内容。

有什么我遗漏的吗?

示例:

       let tablesQuery = app.tables
    let passwordCellsQuery = tablesQuery.cells.containing(.staticText, identifier:"Password")
    passwordCellsQuery.children(matching: .secureTextField).element.tap()
    passwordCellsQuery.children(matching: .secureTextField).element.typeText("12345678")

    let memorableDateDdMmYyyyCellsQuery = tablesQuery.cells.containing(.staticText, identifier:"Memorable Date (dd/mm/yyyy)")
    memorableDateDdMmYyyyCellsQuery.children(matching: .secureTextField).element(boundBy: 2).tap()
    memorableDateDdMmYyyyCellsQuery.children(matching: .secureTextField).element(boundBy: 2).typeText("1")
    memorableDateDdMmYyyyCellsQuery.children(matching: .secureTextField).element(boundBy: 0).tap()
    memorableDateDdMmYyyyCellsQuery.children(matching: .secureTextField).element(boundBy: 0).typeText("2")
    memorableDateDdMmYyyyCellsQuery.children(matching: .secureTextField).element(boundBy: 1).tap()
    memorableDateDdMmYyyyCellsQuery.children(matching: .secureTextField).element(boundBy: 1).typeText("3")

这次我得到了"Failed to synthesize event: Neither element nor any descendant has keyboard focus. Event dispatch snapshot: SecureTextField"

我害怕任何新的 XCode 版本,因为它总是破坏我所有的 UI 测试,这次是版本 11.4.1 (11E503a)。

单元测试表现良好(谢天谢地)。

你不应该坚持使用自动生成的代码。

自己写测试代码和元素描述,这样测试会更稳定。

尽量让你的代码更简单——它会更容易维护。

    let table = app.tables.element
    let passwordCell = table.cells["Password"]
    passwordCellsQuery.tapAndType("12345678")

    let dateCell = table.cells["Memorable Date (dd/mm/yyyy)"]
    dateCell.secureTextFields.element(boundBy: 2).tapAndType("1")
    dateCell.secureTextFields.element(boundBy: 0).tapAndType("2")
    dateCell.secureTextFields.element(boundBy: 1).tapAndType("3")
extension XCUIElement {
    func tapAndType(_ text: String) {
        tap()
        typeText(text)
    }
}