Извлечение информации из XCUIElement
Если я пытаюсь написать Общий тест, который не зависит от меток или других специфичных для значения элементов, как я могу получить эту информацию? Например, если бы я нажал на ячейку tableview и мне понадобилась бы какая-то информация оттуда позже. Например, чтобы определить, какая ячейка прослушивалась. Как я мог бы захватить ярлык из него, используя XCUIElement?
3 ответа:
Информация, которую вы можете извлечь из
XCUIElement
, ограничена теми, которые находятся вXCUIElementAttributes
протокол . Наиболее заметными из них являются,identifier
,value
, иtitle
.Вы можете задать
identifier
через-accessibilityIdentifier
в своем производственном коде. Свойствоvalue
может быть задано из нескольких различных путей, но обычно это активное состояние элемента управления. Например, выбранный элемент средства выбора.Вы можете попробовать использовать инспектор специальных возможностей, чтобы увидеть, что уже установлено на вашем элементе, а затем использование запроса для поиска этого элемента.
Джо был вроде как на правильном ответе, но он забыл, как на самом деле получить значения для свойств, которые он указал.
Предположим, что я хочу получить строку, которая печатается для навигационной панели моего приложения
Что я сделал, так это создал XCUIElement для моей навигационной панели:
XCUIApplication *app = [[XCUIApplication alloc] init]; XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0];
Затем я поставил точку останова после создания объекта navBarTitle и использовал консоль отладки, чтобы распечатать детали navBarTitle объект:
Вы видите в распечатке консоли отладки, что есть ключ , который называется идентификатор.
Чтобы извлечь эту строку из этого объекта, я создал объект NSString, используя следующий метод:
NSString *nameofuser = [navBarTitle valueForKey:@"identifier"];
Я использовал XCUIElement navBarTitle, а затем использовал метод valueForKey. valueForKey извлекает строковое значение для идентификатора ключа.
Вы можете прочитать об этом методе здесь: NSKeyValueCoding
ValueForKey-это ключ к разгадке ответа на этот вопрос....каламбур :)
Вы можете извлечь некоторые состояния, например, accessibilityIdentifier, isHitable, value или любое другое, но, к сожалению, вы не можете установить / изменить ни одно из них. Так что, по-видимому, вы не можете обнаружить, если XCUIElement уже прослушивается или нет. Это большое ограничение в тесте пользовательского интерфейса fw.