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 шт):

Автор решения: seaSponge

Проблема решена: достаточно попросить разработчика накинуть на плашку id, и далее - ассертить ее :)

→ Ссылка