Вопрос или проблема
Я хочу сделать доступными несколько элементов только для доступности и другие только для автоматизации. Но я могу видеть элементы доступности в инспекторе доступности, но не могу увидеть элементы автоматизации.
self.view.accessibilityElements = [loginButton as Any,
registerButton as Any,
closeButton as Any]
self.view.automationElements = [claimLabel as Any,
loginButton as Any,
registerButton as Any,
intoductionImage as Any,
closeButton as Any])
Ответ или решение
Вопрос о различии между элементами доступности и элементами автоматизации в приложениях на Swift имеет большое значение для разработки, ориентированной на пользователя. Особенно это актуально для тех разработчиков, которые стремятся создать инклюзивные приложения, обеспечивая доступ к функционалу как для людей с ограниченными возможностями, так и для автоматизированных тестов.
Понимание элементов доступности и автоматизации
Сначала обратим внимание на ключевые аспекты:
-
Элементы доступности (Accessibility Elements) — это элементы интерфейса, которые предназначены для взаимодействия с системой доступности, такой как VoiceOver. Эти элементы видимы в Accessibility Inspector и могут быть использованы для поддержки пользователей с нарушениями зрения и другими потребностями.
-
Элементы автоматизации (Automation Elements) — это, как правило, элементы интерфейса, которые используются для автоматизации тестирования, но не обязательно предназначены для пользователей с ограниченными возможностями. Эти элементы не отображаются в Accessibility Inspector, что может вызывать трудности при работе с ними.
Проблема с видимостью элементов автоматизации
В приведенном коде вы настраиваете элементы доступности:
self.view.accessibilityElements = [loginButton as Any,
registerButton as Any,
closeButton as Any]
Однако обратите внимание, что в Swift нет встроенного механизма для контроля видимости и управления элементами автоматизации в том же роде, что и доступности. Обычно элементы автоматизации задаются с использованием других методов тестирования, таких как UI Testing.
Решение проблемы
Чтобы реализация требуемой функциональности была успешной, рассмотрите следующие подходы:
-
Создание меток доступа: Убедитесь, что для элементов, предназначенных для автоматизации, вы установили уникальные идентификаторы (Accessibility Identifiers). Это поможет вам ссылаться на них в автоматизированных тестах.
loginButton.accessibilityIdentifier = "loginButton" registerButton.accessibilityIdentifier = "registerButton"
-
Использование UI Test Framework: В то время как элементы доступности могут быть всегда доступны через Accessibility Inspector, автоматизационные элементы можно тестировать при помощи XCTest и его возможностей UI Test. Например, вы можете находить элементы по их идентификаторам:
let app = XCUIApplication() let loginButton = app.buttons["loginButton"]
-
Правильное разделение требований: Если необходимо, чтобы некоторые элементы были доступны исключительно для автоматизации, вы можете не добавлять их в массив
accessibilityElements
, тем самым ограничивая их видимость в Accessibility Inspector. Это создаст удобное разделение между двумя категориями элементов.
Заключение
Хотя элементы автоматизации могут быть недоступны в Accessibility Inspector, эффективное использование идентификаторов доступа и подходов к тестированию UI на Swift поможет решить вашу задачу. Основное внимание следует уделить созданию ясной и четкой структуры элементов интерфейса, где каждый элемент будет исполнять свою функцию без путаницы для пользователей и автоматизированной среды тестирования.