Использование регулярного выражения в XCUIElement

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

func testApp() {
let pattern = "User, [A-Za-z0-9]+, will start in [0-9]+ min"
return app.buttons[pattern].firstMatch()
}

Тест завершается с ошибкой с указанной выше функцией, не позволяя идентифицировать элемент. У кого-нибудь есть мысли по этому поводу?


person gowthamjs23    schedule 20.03.2020    source источник


Ответы (1)


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

Если вы все еще хотите использовать регулярное выражение, вы можете использовать

app.buttons.allElementsBoundByIndex.filter { 
   $0.label.matches(regex)
}

Эта строка вернет массив XCUIElements. Вам понадобится это расширение String

extension String {
    func matches(_ regex: String) -> Bool {
        return self.range(of: regex, options: .regularExpression, range: nil, locale: nil) != nil
    }
}
person Roman Zakharov    schedule 20.03.2020
comment
Вместо использования filter вы можете использовать first. Но я согласен с этим ответом. - person cesarmarch; 20.03.2020