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

问题描述 投票:-1回答:1

我的应用程序启动时会自动进行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确认我的按钮处于视图层次结构中:

enter image description here

UPDATE

我决定在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"

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

accessibility attributes

仍然无法找到测试。

UPDATE 2

我能够使用辅助功能检查器找到该按钮:

inspector

ios swift xctest ui-testing xcuitest
1个回答
0
投票

检查运行查询时,添加按钮的ViewController是否可见。如果不是这样,您的查询将失败。

© www.soinside.com 2019 - 2024. All rights reserved.