iOS UI 测试:等待动态添加按钮存在失败

iOS UI Test: Wait for exist fails for dynamically added button

我的应用程序在启动时会自动更新和初始化 SDK。完成后,我添加了一个按钮来检查我的 UI 测试中是否完成了自动更新和初始化:

let hiddenButton = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))
hiddenButton.setTitle("databaseUpdated", for: .normal)
hiddenButton.accessibilityIdentifier = "databaseUpdated"
self.view.addSubview(hiddenButton)

我试过按照以下几行来检查它,但总是失败:

XCTAssertTrue(app.descendants(matching: .button)["databaseUpdated"].waitForExistence(timeout: 60))
XCTAssertTrue(app.children(matching: .button)["databaseUpdated"].waitForExistence(timeout: 60))
XCTAssertTrue(app.otherElements["databaseUpdated"].waitForExistence(timeout: 60))
XCTAssertTrue(app.buttons["databaseUpdated"].waitForExistence(timeout: 60))

我已使用 Debug View Hierarchy:

确认我的按钮在视图层次结构中

更新

我决定在 viewDidLoad 中添加具有不同标识符的按钮,并在初始化 SDK 时更新它:

private let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))

override public func viewDidLoad() {
    super.viewDidLoad()
    button.isAccessibilityElement = true
    button.accessibilityTraits = .button
    button.accessibilityIdentifier = "initial"
    view.addSubview(button)
}

SDK 初始化时设置为:

button.accessibilityIdentifier = "databaseUpdated"

这是我在视图调试器中检查按钮时看到的内容:

仍然测试找不到它。

更新 2

我可以使用辅助功能检查器找到按钮:

检查 运行 查询时您添加的按钮 ViewController 是否可见。否则您的查询将失败。