Выбор первого экземпляра статического текста в XCUITest

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

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

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

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


        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
    }

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


person Sean Long    schedule 04.05.2020    source источник


Ответы (1)


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

app.collectionViews.cells.firstMatch.doubleTap()

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

person Roman Zakharov    schedule 06.05.2020