2

在我的 XCUITests 中,我需要在验证错误后检查 SkyFloatingLabelTextField 中浮动标题标签的内容。

我已经为 SkyFloatingLabelTextField 元素设置了accessibilityIdentifier,所以我可以毫无问题地点击并输入文本,但是如何仅使用XCUIElement 访问它的标题(titleLabel?)?

我尝试将titleLabel 设置为具有自己的accessibilityIdentifier 的accessibilityElement,但在那之后我无法访问我的测试中的文本字段。

4

2 回答 2

1

您将需要添加扩展 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 中的 textfild 获取标题:

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")
于 2020-03-18T19:24:18.040 回答
-2

ASkyFloatingLabelTextField继承自UITextField任何适用的方法也UITextField应该适用SkyFloatingLabelTextField

于 2017-11-23T10:47:27.557 回答