Каждый раз, когда Apple выпускает новую версию XCode, мои тесты пользовательского интерфейса терпят неудачу - PullRequest
0 голосов
/ 16 апреля 2020

Каждый раз, когда Apple выпускает новую версию XCode, мои тесты пользовательского интерфейса не проходят. И мне нужно потратить дни, чтобы понять, что нужно изменить в тестах.

Есть ли что-то, чего мне не хватает?

Пример:

       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")

На этот раз Я получаю сообщение «Не удалось синтезировать событие: ни элемент, ни какой-либо потомок не имеют фокуса клавиатуры. Снимок отправки события: SecureTextField»

Дошло до того, что я боюсь любого нового выпуска XCode, поскольку он ВСЕГДА ломает все мои тесты пользовательского интерфейса, на этот раз это версия 11.4.1 (11E503a).

Модульные тесты ведут себя (к счастью).

1 Ответ

1 голос
/ 16 апреля 2020

Вы не должны придерживаться автоматически сгенерированного кода.

Напишите тестовый код и описание элементов самостоятельно - так тестирование будет более стабильным.

Постарайтесь сделать свой код проще - его будет проще поддерживать.

    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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...