Тестирование динамически генерируемых элементов пользовательского интерфейса с помощью инструмента XCode Automation

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

По крайней мере, я не могу распечатать их с помощью logElementTree() и не знаю, как получить доступ к динамически генерируемым элементам.

Есть ли способ получить доступ к динамически сгенерированным элементам с помощью скрипта?

Это мой код, который пытается регистрировать элементы пользовательского интерфейса.

var target = UIATarget.localTarget();

var app = target.frontMostApp();

Окно var = app.mainWindow();

цель.logElementTree();

Далее я попытался использовать app.mainWindow().logElementTree(); он тоже не работает.

Любая помощь будет высоко оценена.


person deltaaruna    schedule 13.12.2012    source источник


Ответы (1)


Вот ответ. Я сделал это сам. Это процесс.

Мы можем использовать метод delay(int) для приостановки тестового скрипта, потому что скрипт остается в живых. В противном случае сценарий завершится до того, как отрисуется динамический пользовательский интерфейс.

Теперь методы logElementTree() работают, и мы можем получить доступ к элементам пользовательского интерфейса.

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

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

var target = UIATarget.localTarget(); var app = target.frontMostApp(); приложение.logElementTree();

//-- выбираем элементы UIALogger.logMessage("Нажмите кнопку подключения" ); var window = UIATarget.localTarget().frontMostApp().mainWindow().buttons() [0].tap();

UIALogger.logMessage("Дождитесь следующего пользовательского интерфейса"); цель.задержка( 2 ); target.frontMostApp().logElementTree(); UIALogger.logMessage("Введите имя пользователя");

UIALogger.logMessage("Дождитесь следующего пользовательского интерфейса"); цель.задержка(3); target.frontMostApp().logElementTree(); target.frontMostApp().mainWindow().scrollViews()[0].textFields()[0].setValue("admin"); UIALogger.logMessage("Отключить клавиатуру"); имя переменной = UIATarget.localTarget().frontMostApp().keyboard().buttons()["готово"].tap();

Надеюсь, это поможет кому-то

person deltaaruna    schedule 04.01.2013
comment
Есть ли способ получить все элементы управления, доступные на экране во время автоматизации. Чтобы быть более конкретным, я хочу сохранить содержимое logElementTree в некоторой переменной, как это сделать? - person Prabhu Konchada; 10.06.2015