2015-10-23 2 views
2

Если я пытаюсь написать общий тест, который не зависит от меток или других элементов, связанных с определенными значениями, как я могу получить эту информацию? Например, если бы я нажал на ячейку tableview и вам понадобилась некоторая информация позже. Как бы определить, какая ячейка была нажата. Как я могу взять ярлык из него с помощью XCUIElement?Извлечь информацию из XCUIElement

ответ

1

Информация, которую вы можете извлечь из XCUIElement, ограничена таковой в XCUIElementAttributes protocol. Наиболее примечательными из них являются identifier, value и title.

Вы можете установить identifier через -accessibilityIdentifier в ваш производственный код. Свойство value может быть установлено из нескольких разных путей, но обычно это активное состояние элемента управления. Например, выбранный элемент выбора.

Вы можете попробовать использовать Инспектор доступности, чтобы узнать, что уже установлено в вашем элементе, а затем с помощью запроса найти этот элемент.

+1

По какой-то причине я никогда не могу получить фактическое значение. Я продолжаю пробовать такие вещи: app.tables.elementBoundByIndex (0) .cells.elementBoundByIndex (3) .staticTexts.elementBoundByIndex (1) И никогда не получайте фактическое значение. Я продолжаю получать: Необязательно() И разворачивание его как строки дает мне пустую строку – ajc6432

+0

Оказалось, что я в конечном итоге не привязал XCUIElementQueries правильно для иерархии пользовательского интерфейса. Кстати, ваш сайт действительно полезен. Спасибо, что запустили его. Я немного позаботился об этом еще до этого. – ajc6432

0

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

Давайте предположим, что я хочу, чтобы получить строку, которая печатается на панели навигации моего приложения

enter image description here

То, что я сделал, я создал XCUIElement для моей панели навигации:

XCUIApplication *app = [[XCUIApplication alloc] init]; 
XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0]; 

Затем я установил точку останова после создания объекта navBarTitle и использовал консоль отладки, чтобы распечатать детали объекта navBarTitle:

print out

Вы видите в печати из консоли отладки, что есть ключ называется идентификатор.

Чтобы извлечь эту строку из этого объекта, я создал объект NSString, используя следующий метод:

NSString *nameofuser = [navBarTitle valueForKey:@"identifier"]; 

Я использовал XCUIElement navBarTitle, а затем использовал метод valueForKey. valueForKey извлекает строковое значение для идентификатора ключа.

Вы можете прочитать об этом методе здесь: NSKeyValueCoding

valueForKey является ключом к разгадке ответа на этот вопрос .... каламбур :)

0

Вы можете извлечь некоторые состояния, например, accessibilityIdentifier, isHitable, значение или что-то еще, но, к сожалению, вы не можете установить/изменить любой из них. Поэтому, видимо, вы не можете обнаружить, что XCUIElement уже используется или нет. Это большое ограничение в ui test fw.

Смежные вопросы