iOS UITest: Как проверить настраиваемые действия специальных возможностей? - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу поддерживать VoiceOver. У меня есть UIButton внутри UITableViewCell. В соответствии с рекомендациями я отключил кнопку доступности (.isAccessibilityElement = false) и реализовал настраиваемое действие доступности для ячейки (accessibilityCustomActions, NSAccessibilityCustomAction).

Таким образом VoiceOver не сможет найти и прочитать кнопку как собственный элемент. Чтобы сделать функцию за кнопкой доступной, я добавил в ячейку настраиваемое действие доступности. С помощью пользовательского действия пользователь может выбрать действие, проведя пальцем вверх и вниз. Затем выполните двойное касание.

Теперь я хочу протестировать это действие с помощью UITest. Невозможно получить доступ к кнопке внутри UITest, потому что она недоступна для доступа.

Как я могу выполнить настраиваемое действие доступности внутри UITest?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Как я могу выполнить настраиваемое действие доступности внутри UITest?

На самом деле, вы не можете с {Xcode 10, iOS 12} и дажеесли вы можете получить массив действий в UITest, это ноль, и вы не можете запустить селекторы из XCUITEST (тесты пользовательского интерфейса не получают доступ на уровне кода к приложению, как это делают модульные тесты) .

Тестирование вручную в настоящее время является единственным способом проверки пользовательских действий с помощью VoiceOver.

Посмотрите на этот ответ , данный инженером Apple во времяWWDC 2019.

0 голосов
/ 20 февраля 2019

Не знаю, правильно ли я понял ваш вопрос или это сработает, но вы можете попробовать координату (withNormalizedOffset:) , чтобы нажать на эту кнопку UIButton

Например.

let buttonRectMidX = 300.0
let cellWidth = 320.0
let buttonRectMidY = 25.0
let cellHeight = 50.0


app.tables.firstMatch
    .cells.element(boundBy: 2)
    .coordinate(withNormalizedOffset: CGVector(dx: buttonRectMidX / cellWidth, dy: buttonRectMidY / cellHeight))
    .tap()

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