Элемент не сохраняет свой идентификатор доступности Storyboard или тип во время выполнения - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть автоматический тест пользовательского интерфейса, чтобы убедиться, что страница отображает правильные элементы, выполняя их поиск с помощью запросов XCUIElement, например:

let instructionLabelID = "UIA_HelpViewController_InstructionLabel"
let callViewID = "UIA_HelpViewController_CallTextView"

var instructionLabel: XCUIElement { return app.staticTexts[instructionLabelID] }
var instructions: String { return instructionLabel.label }

var callLabel: XCUIElement { return app.textViews[callViewID] }
var callText: String { return callLabel.value as! String }

Вот соответствующая раскадровка

storyboard

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

bp

Как мы видим, первый элемент корректен в этомон находится под другим (его контейнерное представление), имеет тип StaticText и имеет свой идентификатор.Второй элемент, однако, кажется, объединен в свой контейнер, а не является его дочерним элементом.В обоих контейнерах опция Accessibility Enabled не отмечена.Как я могу это исправить?

1 Ответ

0 голосов
/ 25 сентября 2018

Похоже, вы установили в текстовом представлении accessibilityTraits = .notEnabled для контейнера, а не установили isAccessibilityElement = false.

Попробуйте установить эти свойства в коде, а не в раскадровке, если это возможно, так какдает больше контроля - значения раскадровки могут быть легко перезаписаны, но если вы установите их в коде, вы можете контролировать, когда установлены идентификаторы, и переопределять их, если есть какие-либо помехи.

...