Выбор первого экземпляра статического текста в XCUITest - PullRequest
0 голосов
/ 04 мая 2020

У меня есть приложение, в котором создается группа UIViews, каждая из которых имеет метку, содержащую динамический c StaticText.

Поскольку этот экран может иметь случайное количество этих состояний c текстов, я хочу, чтобы мой тест пользовательского интерфейса касался первой метки, которая соответствует заданным c строковым критериям.

Таким образом, идея, которую я бросаю, будет каким-то образом получить список всех меток, а затем нажать на указанный c тот, который я хочу.

В настоящее время у меня определено несколько базовых c функций:


        let specificOrder = getTaskByIdx(1)

        if specificOrder?.waitForExistence(timeout: defaultTimeout) == false {
            app.swipeUp()
        }
        XCTAssertTrue(specificOrder?.waitForExistence(timeout: defaultTimeout) ?? false, "Could not find order.")

        specificOrder?.tap()
        specificOrder?.tap()
    }

    func getTaskByIdx(_ idx: Int) -> XCUIElement? {
        let tasks = getTasks()
        return getElementByIdx(tasks, idx: idx)
    }

    fileprivate func getTasks() -> [XCUIElement] {
        return app.collectionViews.children(matching: .cell).allElementsBoundByIndex
    }

Это в настоящее время возвращает nil для specificOrder, и я вроде не понимает, где. Я говорю ему создать список всех tasks в виде массива, верно?

1 Ответ

0 голосов
/ 06 мая 2020

Я рекомендую вам использовать эту простую строку вместо всего кода, который вы написали

app.collectionViews.cells.firstMatch.doubleTap()

Прочтите эти статьи, чтобы лучше узнать, как находить элементы и взаимодействовать с ними https://developer.apple.com/documentation/xctest/xcuielementquery https://developer.apple.com/documentation/xctest/xcuielement

...