Есть ли способ проверить существование элемента в XCTest, кроме функции .exists?

В настоящее время я работаю в среде XCTest iOS и использую функцию .exists для проверки наличия элемента. Хотите знать, есть ли другой способ проверить наличие элемента в пользовательском интерфейсе, поскольку .exists вызывает проблемы. Тесты проходят успешно при первом запуске, но когда они запускаются во второй раз, они терпят неудачу, потому что скрипт щелкает элемент, который не существует в пользовательском интерфейсе, возможно, из-за того, что элементы, загруженные в первый раз в приложении, остаются скрытыми, но существуют.

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


person OsamaA    schedule 06.10.2015    source источник
comment
разве вы не должны проверять этот элемент, если он не существует? Звучит как просто изменение логина ваших утверждений.   -  person cakes88    schedule 16.10.2015


Ответы (2)


Я тоже ищу способ дождаться появления элемента вместо использования метода сна. иногда элементы пользовательского интерфейса загружаются дольше, но это не значит, что в конечном итоге они не появятся. В этот момент вы можете проверить использование .exists

Существует ссылка на класс XCUIApplication, размещенная не на Apple, а в OBJ-C: http://masilotti.com/xctest-documentation/index.html

ОБНОВЛЕНИЕ: я думаю, что нашел решение по этой ссылке Задержка/ожидание в тестовом случае тестирования пользовательского интерфейса Xcode

Мне помогло использование класса NSPredicate.

    let welcomePage = app.staticTexts["Landing Page"]
    let existsPredicate = NSPredicate(format: "exists == 1")

    expectationForPredicate(existsPredicate, evaluatedWithObject: LandingPageLoad, handler: nil)
    waitForExpectationsWithTimeout(5, handler: nil)
  • Сначала создайте константу значения или объекта, которого вы ждете.
  • Создайте еще одну константу, используя класс NSPredicate, чтобы сравнить значение объекта.
  • Затем используйте метод expectationForPredicate вместе с vars
  • И, наконец, дайте обработчику верхний предел тайм-аута.
person Laser Hawk    schedule 10.11.2015

Я ссылаюсь на этот ответ, и эта функция XCUIElementQuery может обрабатывать случай, когда элемент не создан:

 open func matching(identifier: String) -> XCUIElementQuery

ref: Проверка видимости элемента с помощью XCode 7 UITest

person Bill Chan    schedule 12.01.2017