Как получить доступ к нужной кнопке элемента на панели навигации в XCUITest? - PullRequest
0 голосов
/ 09 января 2019

Я пишу кейсы UITest для моего приложения iOS Swift. В приложении я создал пользовательскую правую кнопку элемента на панели навигации следующим образом:

let barButtonItem = UIBarButtonItem(customView: customView)
navigationItem.rightBarButtonItem = barButtonItem

Теперь я не знаю, как получить доступ к этой пользовательской кнопке нужного элемента в XCUITest, и мне действительно нужна помощь. Заранее спасибо.

1 Ответ

0 голосов
/ 15 января 2019

Вы не можете получить доступ к UIBarButtonItem, потому что это не настоящий UIElement (это не UIView подкласс), но вы все равно, возможно, захотите получить доступ к UIButton внутри элемента правой панели кнопок.

Есть несколько способов получить доступ к кнопке, вот две идеи:

1. Запрос первой кнопки на панели навигации

let rightNavBarButton = XCUIApplication().navigationBars.children(matching: .button).firstMatch
XCTAssert(rightNavBarButton.exists)

Таким образом, вы получаете доступ к первому UIButton внутри UINavigationBar.

Это работает, только если на панели навигации есть только одна кнопка. Так что он сломается, когда вы добавите еще одну кнопку.

2. Используйте идентификатор доступности

Вы можете определить идентификатор доступности для кнопки внутри правой кнопки мыши и использовать ее для доступа к ней во время теста:

В вашем приложении:

let barButtonItem = UIBarButtonItem(customView: customView)
barButtonItem.accessibilityIdentifier = "navbarRightItem"
navigationItem.rightBarButtonItem = barButtonItem

В вашем тесте:

let rightNavBarButton = XCUIApplication().navigationBars.buttons["navbarRightItem"]
XCTAssert(rightNavBarButton.exists)

Просто убедитесь, что вы используете accessibilityIdentifier, а не accessibilityLabel. Потому что accessibilityLabel будет прочитано VoiceOver для пользователей с ограниченными возможностями и должно содержать полезный текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...