У меня есть пустое текстовое поле в моем пользовательском интерфейсе, хотя в раскадровке установлен текст-заполнитель (значение которого равно foo
). В моем тесте пользовательского интерфейса я пытаюсь проверить, что его текстовое значение начинается пустым, но когда я запрашиваю его значение, вместо этого он, кажется, дает мне значение заполнителя:
func testTextFieldInitiallyEmpty {
let input = XCUIApplication().textFields["My Text Field"]
XCTAssertEqual(input.value as! String, "")
}
поскольку тест завершается с ошибкой с этим сообщением:
Ошибка XCTAsertEqual: ("foo") не равно ("")
Конечно, foo
— это значение-заполнитель, но это не текстовое значение этого текстового поля. Я бы ожидал этого сообщения об ошибке, если бы написал:
XCTAssertEqual(input.placeholderValue as! String, "")
input
— это XCUIElement
, реализующий XCUIElementAttributes
, поэтому я не вижу здесь ничего другого, что могло бы помочь.
Как проверить (утвердить), что текстовое поле пусто?
Редактировать
Проведя некоторые дальнейшие исследования и опробовав приведенные ниже предложения по использованию свойств input
accessibilityValue
, label
и title
, я не нашел решения, которое дало бы мне текстовое значение текстового поля, когда есть текст, и пустую строку, когда только заполнитель виден.
Это похоже либо на (а) ошибку, либо (б) сомнительное проектное решение тестовой среды, не обеспечивающее эту возможность. Как минимум документация для XCUIElementAttributes#value кажется мне неадекватной. , так как единственная деталь:
Точный тип значения зависит от типа элемента.
Все еще ищу лучшее решение...