Тестирование пользовательского интерфейса с помощью Xcode: как найти кнопку без заголовка?

У меня есть несколько кнопок в моем пользовательском интерфейсе, которые отображают только изображение, но не заголовок. Как я могу получить к ним доступ во время теста пользовательского интерфейса? window.buttons["delete"].click() не находит кнопку из-за отсутствия заголовка. И я не могу установить заголовок, потому что изображение имеет некоторую прозрачность.


person Wizard of Kneup    schedule 04.06.2017    source источник


Ответы (2)


Вы должны установить accessibilityIdentifier. Это свойство, не предназначенное для пользователя, которое было разработано, чтобы позволить вам идентифицировать элементы в ваших тестах пользовательского интерфейса. Он был введен, чтобы люди не злоупотребляли accessibilityLabel, который люди раньше использовали для идентификации вещей в своих тестах, но который повлиял на опыт пользователей закадрового голоса, которые слышат содержимое accessibilityLabel при выборе элемента.

// app code
let myButton: UIButton!
myButton.accessibilityIdentifier = "deleteButton"

// test code
let app = XCUIApplication()
let deleteButton = app.buttons["deleteButton"]
person Oletha    schedule 05.06.2017

Вы можете найти кнопки через accessibilityLabel. Итак, сначала установите метку:

deleteButton.setAccessibilityLabel("delete")

И затем вы можете получить к нему доступ как обычно с помощью:

 untitledWindow.buttons["delete"].click()
person Wizard of Kneup    schedule 04.06.2017
comment
Это действительно работает; однако имейте в виду, что метка доступности обращена к пользователю. Идентификатор доступности предпочтительнее, поскольку он не влияет на пользователя. Задайте идентификатор в коде, как показано в ответе @Oletha, или с помощью Interface Builder. Если кто-то действительно хочет (или нуждается) вместо этого по какой-то причине, убедитесь, что вы назвали его так, чтобы это было понятно человеку, использующему закадровый голос. - person leanne; 29.07.2018