Проверьте, поддерживает ли данный iPhone разделенный вид в расширенном режиме.

На iPhone 6 (и меньше) телефон никогда не отображает разделенный вид в «расширенном» режиме. То есть первичный и вторичный контроллеры представления внутри разделенного представления всегда отображаются последовательно. Напротив, на iPhone 6Plus (и более крупных моделях) телефон будет отображать разделенные изображения в расширенном режиме в альбомной ориентации. То есть первичный и вторичный контроллеры представления показаны рядом.

Это создает проблему для тестов пользовательского интерфейса. Если устройство представляет собой телефон, а класс размера по горизонтали — Компактный (iPhone 6 и меньше), тогда должен быть один набор тестов. Если устройство представляет собой телефон, а класс размера по горизонтали — Regular, тогда должен быть отдельный набор тестов.

К сожалению, мне не удалось найти тест для классов размеров при работе с UIElements в UITests. Есть ли способ получить информацию о traitCollection при тестировании пользовательского интерфейса?

Объект UIDevice имеет свойство «модель». Это строка. При тестировании на симуляторе единственными значениями, которые я видел в этом свойстве, являются «телефон» или «планшет». Номер модели телефона, похоже, недоступен, и документация Apple не гарантирует какой-либо конкретной ценности.

Объект UIDevice также имеет свойство userInterfaceIdiom. Это перечисление может сообщать о таких вещах, как CarPlay и Apple TV, в дополнение к планшету и телефону, но опять же не возвращает никакой информации о номере модели.

XCUIDevice не сообщает ни о среде признака, ни о номере модели.

Мой обходной путь - вставить тестовый код в мой основной проект. В начальной сцене я даю одному из элементов идентификатор доступности, который отражает исходный класс горизонтального размера. Например, если есть заголовок, то идентификатор доступности становится «заголовок (компактный)» или «заголовок (обычный)». Это можно запросить в тестах пользовательского интерфейса во время установки, а глобальную переменную можно установить для последующего использования. Однако это довольно плохой кладж.

Я надеюсь, что кто-то знает об объекте (доступном в тестах пользовательского интерфейса), который вернет что-то вроде:

<some object>.supportsSplitViewInExandedMode

Это было бы прекрасно!


person Bill Nattaner    schedule 02.08.2019    source источник
comment
Я согласен, в основном! У меня нет проблем с вставкой идентификаторов доступности в мой основной проект, когда это проясняет намерения и упрощает тестовый код. Мой кладж, однако, рискует сделать мои тесты довольно хрупкими.   -  person Bill Nattaner    schedule 02.08.2019


Ответы (1)


Извините Все!

Другим, столь же нетерпеливым программистам может быть полезно знать, что самой последней функцией, описанной в Apple Docs для XCUIElementAttributes, является «SizeClass». В документах указано:

Описывает доступные классы размера пользовательского интерфейса.

Это должно сделать это!

person Bill Nattaner    schedule 02.08.2019