如何将 accessibilityIdentifier 添加到 UIAlertController 中的 textField
How can I add an accessibilityIdentifier to a textField within a UIAlertController
使用 XCUITest 我很难在 UIAlertController 上找到一个文本字段,它用于将项目添加到列表中。
我已经向警报本身添加了一个 accessibilityIdentifier,但如果可能的话,我也想向 textField 添加一个,因为到目前为止我的测试(部分记录)只能在函数第一次运行时找到该字段运行。第二次打开警报以将项目添加到列表时,它无法在 textField 上找到焦点。
UIAlertConroller 看起来像这样:
let alert = UIAlertController(title: "Add A Task", message: "Add new", preferredStyle: .alert)
alert.view.accessibilityIdentifier = "Add Task Panel" // Added this identifier to help with UI tests
alert.addTextField(configurationHandler: nil)
alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Add", style: .default, handler: { [weak self] (action) -> Void in
测试函数看起来像这样,但部分是使用 'record' 功能生成的,所以不理想,因为我觉得必须有更好的方法来识别 textField(屏幕上只有一个)。
func addTextToOpenPopUp(textToAdd: String) {
let popUpTextField = app.alerts["Add Task Panel"].scrollViews.otherElements.collectionViews.cells
.children(matching: .other).element
.children(matching: .other).element
.children(matching: .other).element
.children(matching: .other).element(boundBy: 1)
.children(matching: .textField).element
popUpTextField.tap()
popUpTextField.typeText(textToAdd)
}
我花了几个小时试图找到一种方法来将标识符添加到警报中的组件,但找不到任何答案。
您错过了 configurationHandler
,它专门用于修改您的文本字段:
alert.addTextField(configurationHandler: { textField in
textField.accessibilityIdentifier = "Task Text Field"
})
使用 XCUITest 我很难在 UIAlertController 上找到一个文本字段,它用于将项目添加到列表中。
我已经向警报本身添加了一个 accessibilityIdentifier,但如果可能的话,我也想向 textField 添加一个,因为到目前为止我的测试(部分记录)只能在函数第一次运行时找到该字段运行。第二次打开警报以将项目添加到列表时,它无法在 textField 上找到焦点。
UIAlertConroller 看起来像这样:
let alert = UIAlertController(title: "Add A Task", message: "Add new", preferredStyle: .alert)
alert.view.accessibilityIdentifier = "Add Task Panel" // Added this identifier to help with UI tests
alert.addTextField(configurationHandler: nil)
alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Add", style: .default, handler: { [weak self] (action) -> Void in
测试函数看起来像这样,但部分是使用 'record' 功能生成的,所以不理想,因为我觉得必须有更好的方法来识别 textField(屏幕上只有一个)。
func addTextToOpenPopUp(textToAdd: String) {
let popUpTextField = app.alerts["Add Task Panel"].scrollViews.otherElements.collectionViews.cells
.children(matching: .other).element
.children(matching: .other).element
.children(matching: .other).element
.children(matching: .other).element(boundBy: 1)
.children(matching: .textField).element
popUpTextField.tap()
popUpTextField.typeText(textToAdd)
}
我花了几个小时试图找到一种方法来将标识符添加到警报中的组件,但找不到任何答案。
您错过了 configurationHandler
,它专门用于修改您的文本字段:
alert.addTextField(configurationHandler: { textField in
textField.accessibilityIdentifier = "Task Text Field"
})