Как получить содержимое плавающего заголовка в SkyFloatingLabelTextField с помощью XCUITest?

В моих XCUITests мне нужно проверить содержимое метки с плавающим заголовком в SkyFloatingLabelTextField после ошибки проверки.

Я установил accessibilityIdentifier для элемента SkyFloatingLabelTextField, поэтому я могу нажать и ввести в него текст без каких-либо проблем, но как я могу получить доступ к его заголовку (titleLabel?), Используя только XCUIElement?

Я попытался установить titleLabel как accessibilityElement с его собственным accessibilityIdentifier, но после этого мне не удалось получить доступ к текстовому полю в моих тестах.


person Krzysiek Sadowski    schedule 25.10.2017    source источник


Ответы (2)


Вам потребуется добавить расширение SkyFloatingLabelTextField:

extension SkyFloatingLabelTextField {
    override open var accessibilityIdentifier: String? {
        didSet {
            isAccessibilityElement = false
            titleLabel.isAccessibilityElement = true
            titleLabel.accessibilityIdentifier = (accessibilityIdentifier ?? "") + "Title"
        }
    }
}

В контроллере вам нужно добавить accessibilityIdentifier:

@IBOutlet weak var textField: SkyFloatingLabelTextField!
textField.accessibilityIdentifier = "YourTextFieldIdentifier"

Если вы хотите получить заголовок из текстового файла в XCTestCase:

let app = XCUIApplication()
app.launch()
let elementsQuery = app.scrollViews.otherElements

let getTitle = elementsQuery.textFields["YourTextFieldIdentifier"].staticTexts["YourTextFieldIdentifierTitle"]
            XCTAssertEqual(getTitle.label, "Your set title text")

elementsQuery.textFields["YourTextFieldIdentifier"].tap()
elementsQuery.textFields["YourTextFieldIdentifier"].typeText("Type text")
person Valeriy    schedule 18.03.2020

SkyFloatingLabelTextField наследуется от UITextField, поэтому любой метод, работающий для UITextField, должен работать и для SkyFloatingLabelTextField.

person Hugo Tunius    schedule 23.11.2017