Можно ли запустить инструмент автоматизации пользовательского интерфейса из командной строки?

Есть ли способ открыть инструмент UIAutomation через терминал?

Можно ли будет написать AppleScript, чтобы открыть инструмент Apple UIAutomation и загрузить тестируемое приложение?

Подскажите пожалуйста, можно ли через скрипт или через командную строку открыть UIAutomation и выбрать тестируемое приложение, а так же выбрать тестовый скрипт?


person Vijay    schedule 16.11.2010    source источник
comment
Как насчет бета-версий iOS5, это должно быть вполне возможно.   -  person    schedule 27.07.2011


Ответы (9)


instruments -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/\
PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
<full_path_to_application> -e UIASCRIPT <path_to_script.js> \
-e UIARESULTSPATH <output_results_path>

для xcode >= 4.5

instruments -t
/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/\
AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
<full_path_to_application> -e UIASCRIPT <path_to_script.js> \
-e UIARESULTSPATH <output_results_path>

для xcode >= 6.1

instruments -w <device ID> -t \
/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/\
AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate \
<full_path_to_application> -e UIASCRIPT <path_to_script.js> \
-e UIARESULTSPATH <output_results_path>

Однако следует отметить несколько важных моментов:

  1. параметр -w не требуется, если только вы не хотите запускать сценарии на своем устройстве. Если вы хотите запускать свои скрипты на симуляторе, просто не указывайте этот параметр в команде.
  2. #P4# <блочная цитата> #P5# #P6#
  3. path_to_script.js должен быть ПОЛНЫМ ПУТИ к месту сохранения вашего скрипта автоматизации, написанного на javascript. Также не забудьте заключить этот путь в двойные кавычки.

  4. Наконец, путь к результатам вывода — это путь, по которому вы хотите сохранить результаты вывода. Также не забудьте заключить этот путь в двойные кавычки.

Это были моменты, которые я упустил, и поэтому получил некоторые из ошибок, упомянутых выше.

person Farhan Ahmed Wasim    schedule 22.06.2012
comment
Где у вас есть параметр -w в приведенном выше примере? - person Tyler Pfaff; 23.01.2014
comment
Я делаю точно такие же вещи, но у меня есть ошибка, подобная этой. tools [2760: 1207] Невозможно интерпретировать путь '(null)'. Ошибка трассировки инструментов: ошибка при запуске записи, но пути не являются нулевыми или пустыми. У вас есть идея? - person Yucel Bayram; 07.04.2014
comment
@yucelbayram Любой совет по этому поводу Невозможно интерпретировать путь '(null)'? - person William Entriken; 26.04.2014
comment
@FullDecent Конечно, путь моего приложения был не совсем верным. Истинный путь был таким: /Users/MyUserName/Library/Application Support/iPhone Simulator/7.1/Applications/87F1A296-A45A-4E48-8157-0C4574DECFD6 Я исправил это, и оно начало работать. Убедитесь, что ваши пути действительно верны. - person Yucel Bayram; 28.04.2014
comment
где параметр -w ?? пожалуйста, я хочу запустить это на своем устройстве - person Omer Obaid; 27.05.2014
comment
как вы получаете вывод приложения? то есть NSLog или код выхода ..? я выполняю тесты автоматизации, и мне нужно это значение, чтобы убедиться, что мое приложение работает нормально во время запуска этого инструмента. - person Itay Levin; 14.01.2015
comment
Я обнаружил, что мне пришлось использовать параметр -w даже с моим симулятором в Xcode 6.1.1. Я обнаружил, что это необходимо: -w iPhone 5s - person MStudios; 23.03.2015
comment
Я дал UDID и путь к файлу трассировки.... Теперь, что будет ‹полный_путь_к_приложению› на моем iPhone 5S, работающем на 8.3?? - person Prabhu Konchada; 03.06.2015
comment
Это действительно здорово, и это очень помогло мне. Но у меня есть вопрос относительно шаблона -t. Что он делает и зачем нужен? - person Empario; 23.06.2015
comment
Я получил сообщение об ошибке: Ошибка трассировки инструментов: *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: попытка вставить нулевой объект из объектов [0], когда я использовал шаблон xcode ›= 6.1. Кто-нибудь знает, почему это происходит? - person munmunbb; 06.10.2015
comment
‹full_path_to_application› также может быть именем приложения/процесса, к которому вы хотите подключиться. - person HaemEternal; 09.05.2016

Запуск UIAutomation через командную строку. Вы можете сделать это сейчас, начиная с XCode 4.2 для iOS5 beta 4. Из командной строки вы можете запускать инструменты, указывающие на шаблон автоматизации, и указывать в качестве переменных среды тестовый сценарий, который вы хотите выполнить, и путь назначения для результатов:

tools -w -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate -e UIASCRIPT

Выше приведен URL этого источника: http://dev-ios.blogspot.com/2011/07/starting-uiautomation-via-command-line.html

Дополнительные сведения о командной строке от Apple см. по адресу: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/instruments.1.html

Плюс сообщение от пользователя Stacktrace о запуске командной строки с iphone iOS UIAutomation Могут ли инструменты быть используется с помощью командной строки?

Надеюсь, это поможет - хорошего дня :)

person user887803    schedule 10.08.2011
comment
спасибо за ссылки, мои скрипты работают в Инструментах правильно, но я все еще не могу запустить их из командной строки. Я не могу заставить его работать через симулятор. есть идеи, что передать аргумент -w? - person adam.wulf; 08.09.2011
comment
Вы, вероятно, уже разобрались с этим, но аргументом -w должен быть UDID для подключенного устройства. - person Stew; 22.09.2011

Обновлено и протестировано для Xcode 6.0.1:

instruments -w 'iPhone 5s' \
    -t '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' \
    '/Users/sohail/Library/Developer/CoreSimulator/Devices/7232A640-A9D2-4626-A2AD-37AFFF706718/data/Containers/Bundle/Application/E71B915E-051D-4BEF-9083-34416D02EC91/RoadRunnerRadar.app' \
    -e UIASCRIPT '/Users/sohail/Developer/clients/acme/roadrunnerradar/ACMERoadRunnerRadarAutomationTests/TestRunner.js' \
    -e UIARESULTSPATH '/Users/sohail/Developer/clients/acme/roadrunnerradar/ACMERoadRunnerRadarAutomationTests/TestResults/'

Вдохновленный другими, которые написали оболочки командной строки, которые не обновлялись какое-то время и, следовательно, не работали (и казались трудными для понимания, поскольку у меня возник соблазн воскресить их), я написал сценарий оболочки bash, который я поверьте, будет более прозрачным, легким и, следовательно, более простым в обслуживании.

Вы можете найти проект на github и сопутствующий запись в блоге.

person idStar    schedule 20.09.2014

Вместо длинной команды instruments я написал более простую в использовании обертку: https://github.com/enriquez/uiauto.

Чтобы использовать его, вам просто нужно сделать следующее:

  1. Создайте свой проект в Xcode для симулятора (скоро появится поддержка устройств).
  2. cd туда, где находится .xcodeproj или .xcworkspace вашего проекта.
  3. Выполнить uiauto exec path/to/your/script.js.
person Michael Enriquez    schedule 17.08.2013

С каждой новой версией Xcode путь к шаблону меняется. Одним из лучших способов узнать путь к шаблону является команда instruments -s, которая выведет список всех доступных шаблонов.

person harish    schedule 10.01.2013
comment
'instruments -s' также выводит полезную информацию об устройствах. - person James Moore; 19.11.2014

Меня тоже очень заинтересовала эта тема. На самом деле я нашел этот ссылка, который показывает, что есть способ запуска инструментов из терминала с предопределенным шаблоном, местом, где должны храниться результаты, и целевым устройством, на котором он должен работать, и другими параметрами. Вы также можете просто ввести терминал instruments, чтобы получить список параметров.

Таким образом мне не удалось запустить автоматизацию пользовательского интерфейса на iPhone. Я не пробовал симулятор или приложение для Mac, так как меня больше всего интересует устройство. Я разместил вопрос здесь, на SO, но из-за отсутствия любой ответ Я думаю, что немногие люди используют инструменты таким образом.

Но есть надежда запустить его, так как есть его короткая ветка на форуме разработчиков Apple (нужно авторизоваться), которые предполагают, что это можно сделать. Я попробую это позже, если у меня получится, я опубликую решение здесь. Если вам удастся запустить его, пожалуйста, опубликуйте свой путь здесь, так как мне (и, возможно, другим) будет интересно.

person yoosiba    schedule 21.01.2011
comment
Нет, к сожалению. Сейчас я просто сосредоточусь на тестах, которые мне нужно будет запустить, позже (если у меня будет время) я сосредоточусь на способе их запуска в автоматическом режиме. В худшем случае я буду использовать Sikuli (sikuli.org), чтобы автоматизировать это, но это такой обходной путь, которого я хотел бы избежать... - person yoosiba; 11.02.2011
comment
Интересно, работает ли вообще этот инструмент командной строки. Моя цель - автоматизация тестирования CI, но я даже не заставляю ее работать на симуляторе. Я также попробовал поставляемый Leaks.tracetemplate. Появляется Симулятор, пытается запустить приложение, но выдает Неизвестная ошибка. Действительно очень удручает. Файл приложения в порядке, его запуск с помощью Instruments-GUI работает нормально. На сайтах Apple, похоже, нет намека на этот параметр команды. Может быть, они забыли об этом? :) - person Rene Berlin; 10.03.2011
comment
@ Рене Берлин,. Вы столкнулись с неожиданной ошибкой ....? Непредвиденная ошибка в -[UIATarget_0x5a20d20 frontMostApp], /SourceCache/UIAutomation_Sim/UIAutomation-37/Framework/UIATargetElements.m, строка 437. Если вы столкнулись с этой проблемой, ее можно исправить, скопировав com.apple.Accessibility.plist в 4.0.1. . Скопируйте com.apple.Accessibility.plist в: Свернуть ~/Library/Application Support/iPhone Simulator/4.0.1/Library/Preferences. Убедитесь, что в этом имени файла должно быть только два ключа: «AccessibilityEnabled» и «ApplicationAccessibilityEnabled». Оба ключа должны быть проверены. - person Vijay; 22.05.2011
comment
@Юсиба,. Без обид, но использование Sikuli для автоматизации пользовательского интерфейса — не очень хорошая идея. - person Vijay; 22.05.2011
comment
Я согласен, что это не лучший подход, но другого выхода с Инструментами я не вижу. Кроме обученной обезьяны запускать/останавливать и изменять сценарий. - person yoosiba; 13.07.2011

есть инструмент для записи/воспроизведения событий пользовательского интерфейса в среде оболочки, и можно написать сценарий с помощью ruby.

интерактивная разработка приложений для iPhone http://github.com/wookay/libcat

person WooKyoung Noh    schedule 24.03.2011
comment
. Когда мы тестируем клиентское приложение, . обычно они ожидают, что не будут делать/добавлять какой-либо код в свой файл проекта. В любом случае мне нравится ваша идея libcat. Спасибо - person Vijay; 22.05.2011

Введите эту команду в терминальные инструменты -s, вы получите путь к шаблону после типа:

instruments -t <template path> <Application file path> -e UIASCRIPT <script.js> UIARESULTPATH <result_path>
person Prasad Rampilla    schedule 08.03.2013

Правильный способ сделать это на симуляторе iOS выглядит следующим образом:

instruments -w 'iPhone 5s (9.1)' \
-t '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' \
'justTheNameOfYourAppDontAddExtension' \
-e UIASCRIPT '/Users/barry/Dropbox/Public/login.js' \
-e UIARESULTSPATH '/Users/barry/Dropbox/Public/
person barryjones    schedule 16.12.2015