iOS UI Automation: ошибка при assert'e текстового поля через CTAssertTrue
Во время автоматизации кейса по смене email’a пользователя возникла проблема с ассертом элемента «текстовое поле, выделенное красным цветом» - скрин во вложениях). Как решить данную проблему?
text field highlighted in red ".
Как пробовали решить проблему:
- через функцию "waitForText":
func waitForText(name: String) {
waitForElementToAppear(app.staticTexts[name])
}
функция "waitForText" является частным случаем функции"waitForElementToAppear":
func waitForElementToAppear(_ element: XCUIElement) -> Bool{
let predicate = NSPredicate(format: "exists == true")
let expectat = expectation(for: predicate, evaluatedWith: element, handler: nil)
let result = XCTWaiter().wait(for: [expectat], timeout: 20)
return result == .completed
}
- через функцию "waitForTextShort":
func waitForTextShort(name: String) {
waitForElementToAppearShort(app.staticTexts[name])
}
функция "waitForTextShort" вляется частным случаем функции "waitForElementToAppearShort":
func waitForElementToAppearShort(_ element: XCUIElement) -> Bool{
let predicate = NSPredicate(format: "exists == true")
let expectat = expectation(for: predicate, evaluatedWith: element, handler: nil)
let result = XCTWaiter().wait(for: [expectat], timeout: 5)
return result == .completed
}
- через CTAssertTrue:
CTAssertTrue (app.staticTexts.element (match: .any, id: "Enter your email address"). exists)
Поиск элементов с помощью рекордера UI тестов отображает только поле для ввода, но не его наследников.
Выгрузка элементов через po app.staticTexts также не дает нужных результатов:
StaticText, {{16.0, 130.0}, {288.0, 16.5}}, tag: "Enter your email address"
Используемые локаторы:
app.tables/*@START_MENU_TOKEN@*/.staticTexts["Enter your email address"]/*[[".cells.staticTexts[\"Enter your email address\"]",".staticTexts[\"Enter your email address\"]"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/.tap()
Ответы (1 шт):
Проблема решена: достаточно попросить разработчика накинуть на плашку id, и далее - ассертить ее :)