Мое приложение выполняет автоматическое обновление и инициализацию SDK при запуске. По завершении я добавляю кнопку, чтобы проверить, завершено ли автоматическое обновление и инициализация в моем тесте пользовательского интерфейса:
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](https://i.stack.imgur.com/mT3yM.png)
ОБНОВЛЕНИЕ
Я решил добавить кнопку в 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](https://i.stack.imgur.com/rNdGa.png)
все еще тест не может найти его.
ОБНОВЛЕНИЕ 2
Я могу найти кнопку с помощью инспектора специальных возможностей:
![inspector](https://i.stack.imgur.com/iREeE.png)