UITest сравнивает значение элемента в ожидании - PullRequest
0 голосов
/ 09 октября 2018

Я сейчас пытаюсь выяснить, когда индикатор активности включен или выключен.Я понял, что при включении его value равно 1, 0 при выключенном.

Я пытаюсь проверить, равно ли это value 1 или 0, как это:

let app = XCUIApplication()
let predicate = NSPredicate(format: "value == 0")
let expectation = expectation(
        for: predicate, 
        evaluatedWith: app.activityIndicators["activityId"],
        handler: nil)

if XCTWaiter().wait(for:[expectation], timeout: 20) == .completed {
    print ("Activity indicator is off")
} else {
    print ("Activity indicator is on")
}

текущая проблема заключается в том, что тайм-аут всегда достигнут.Всякий раз, когда я устанавливаю точку останова на if и набираю это в консоли:

po app.activityIndicators["activityId"].value

В результате получается:

Optional<Any>
- some : 0

Однако после того, как я снова разрешил запуск теста,истекло время ожидания, а ветвь else занята.

Кто-нибудь может увидеть, что я делаю неправильно, когда получаю value из element в ожидании?

Спасибо за вашу помощь заранее.

1 Ответ

0 голосов
/ 11 октября 2018

Предполагая, что вы оба запустили свое приложение и , правильно установите идентификатор доступности вашего индикатора активности (что, по-видимому, вы сделали), причина, по которой ваш код не делаетработа заключается в том, что value - это строка , а не целое число .

Замена вашего предиката следующим приведёт к тому, что ваш код заработает:

let predicate = NSPredicate(format: "value == \"0\"")
...