在我的XCUITests中,我需要在验证错误后检查SkyFloatingLabelTextField中浮动标题标签的内容。
我已经为SkyFloatingLabelTextField元素设置了accessibilityIdentifier,因此我可以点击并输入文本而不会出现任何问题,但如何仅使用XCUIElement访问其标题(titleLabel?)?
我尝试将titleLabel设置为具有自己的accessibilityIdentifier的accessibilityElement,但之后我无法访问测试中的文本字段。
答案 0 :(得分: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")
答案 1 :(得分:0)
SkyFloatingLabelTextField
继承自UITextField
,因此适用于UITextField
的任何方法都适用于SkyFloatingLabelTextField
。