我有一个密码和确认密码的文本框,我已经应用了“安全文本输入”来掩盖密码。然而,当我运行UI测试时,这些字段不能被找到。
UI测试失败-找不到匹配的“密码”文本框
我正在尝试这样选择字段:
let passwordTextField = app.textFields["password"]
但是当我尝试点击时,它就失败了:
passwordTextField.tap()
你有没有任何关于我如何访问该字段的想法?
我有一个密码和确认密码的文本框,我已经应用了“安全文本输入”来掩盖密码。然而,当我运行UI测试时,这些字段不能被找到。
UI测试失败-找不到匹配的“密码”文本框
我正在尝试这样选择字段:
let passwordTextField = app.textFields["password"]
但是当我尝试点击时,它就失败了:
passwordTextField.tap()
你有没有任何关于我如何访问该字段的想法?
如评论中所讨论的,在访问安全文本字段时,请使用 secureTextFields
选择器。
let passwordTextField = app.secureTextFields["password"]
passwordTextField.tap()
passwordTextField.typeText("my secure password")
secureTextFields
选择器。谢谢! - TylerJames乔的回答很好,但对于我的使用情况来说不够充分。我必须通过索引找到所有文本字段,无论是普通文本字段还是安全文本字段。我在网上找不到任何有关此的信息。
这就是我得出的结论:
// elementType must be specified as integer
//
// See:
// * https://developer.apple.com/documentation/xctest/xcuielementtype/xcuielementtypetextfield
// * https://developer.apple.com/documentation/xctest/xcuielementtype/xcuielementtypesecuretextfield
let textFieldPredicate = NSPredicate(format: "elementType == 49")
let secureTextFieldPredicate = NSPredicate(format: "elementType == 50")
let predicate = NSCompoundPredicate(
orPredicateWithSubpredicates: [
textFieldPredicate,
secureTextFieldPredicate
]
)
let textFields = app.descendants(matching: .any).matching(predicate)
let textField = textFields.firstMatch
textField.tap()
textField.typeText('yeah boi')