Невозможно вызвать окно удаления фотографий во время тестирования пользовательского интерфейса - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь создать UI Test в XCode 10 , который включает в себя шаг, где появится следующее окно:

enter image description here

(к вашему сведению - это поддержка создания сценария видео, поэтому мы хотим предоставить зрителю полный опыт) * ​​1010 *

Изначально я только записал шаги, чтобы убедиться, что я правильно захватил этот запросscreen, и XCode покорно завершил все шаги.

Ниже приведена слегка измененная версия из того, что генерирует XCode.Для записи, использование неизмененной версии также не удается.

func testDeletePhotos() {
    let app = XCUIApplication()
    continueAfterFailure = false
    app.launch()
    // Select two images from within app to delete
    let collectionViewsQuery = app.collectionViews
    collectionViewsQuery.children(matching: .cell)
        .element(boundBy: 1)
        .children(matching: .other)
        .element.children(matching: .other)
        .element(boundBy: 1)
        .tap()
    collectionViewsQuery.children(matching: .cell)
        .element(boundBy: 0).children(matching: .other)
        .element.children(matching: .other)
        .element(boundBy: 1)
        .tap()
    let navigationBar = app.navigationBars["MY_APP_NAME"]
    // Select the "Trash can" in nav bar to start delete process
    navigationBar.buttons["Delete"].tap()
    // Prompt appears properly and text is a precise match for string below
    // Below step fails with error seen below
    app.alerts["Allow “MY_APP_NAME” to delete 2 photos?"].buttons["Delete"].tap()

    navigationBar.buttons["Back"].tap()
}

Однако, когда я пытаюсь перезапустить этот скрипт, он не может найти кнопку Удалить , как видно из приведенного вышеimage.

Тестовое действие пользовательского интерфейса: ошибка подтверждения: MyVideoScript.swift: ###: не найдено совпадений для Find: потомки соответствуют типу оповещения из ввода {(Application, pid: 17838, метка: 'MY_APP_NAME')}

Кроме того, поскольку кто-то может упомянуть об этом - количество фотографий одинаково, так как это изменит текст, который появляется в предупреждении.Я также попытался использовать app.alerts.element(boundBy: 0) вместо поиска по имени и получил ту же ошибку.

1 Ответ

0 голосов
/ 22 декабря 2018

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

let deleteButton = app.alerts["Allow “MY_APP_NAME” to delete 2 photos?"].buttons["Delete"]
let exists = NSPredicate(format: "exists == 1")

expectationForPredicate(exists, evaluatedWithObject: deleteButton, handler: nil)
waitForExpectationsWithTimeout(5, handler: { error in
    // check for error, if none:
    deleteButton.tap()
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...