Какие процессы могут быть запущены с помощью функции executeTaskWithPathArgumentsTimeout? - PullRequest
4 голосов
/ 30 ноября 2011

Я использую UIAutomation для автоматизации приложения для iPad. Я пытался использовать (object) executeTaskWithPathArgumentsTimeout (path, args, timeout) для запуска Safari.app из моего сценария:

var target = UIATarget.localTarget();
var host = target.host();
var result = host.performTaskWithPathArgumentsTimeout("/Applications/Safari.app", ["http://www.google.com"], 30);
UIALogger.logDebug("exitCode: " + result.exitCode);
UIALogger.logDebug("stdout: " + result.stdout);
UIALogger.logDebug("stderr: " + result.stderr);

Я получил следующие результаты: код выхода: 5 стандартный вывод: STDERR:

Я также пытался запустить echo:

var target = UIATarget.localTarget();
var host = target.host();
var result = host.performTaskWithPathArgumentsTimeout("/bin/echo", ["Hello
World"], 5);
UIALogger.logDebug("exitCode: " + result.exitCode);
UIALogger.logDebug("stdout: " + result.stdout);
UIALogger.logDebug("stderr: " + result.stderr);

Результаты: код выхода: 0 стандартный вывод: Hello World STDERR:

Таким образом, похоже, что executeTaskWithPathArgumentsTimeout работает только для определенных приложений.

Не могли бы вы помочь мне ответить на следующие вопросы: 1. Что означает exitCode = 5? 2. Какие процессы можно запустить с помощью функции executeTaskWithPathArgumentsTimeout?

1 Ответ

4 голосов
/ 31 декабря 2011

1) Код выхода 5, скорее всего, EIO, как определено в: Ошибка ввода / вывода.Вы пытаетесь выполнить "/Applications/Safari.app", который для задачи запуска является каталогом, а не двоичным.

2) Вы можете запустить любое приложение с executeTaskWithPathArgumentsTimeout (), которое может запустить NSTask.Пока это допустимый исполняемый файл, он должен работать.

Для вашего конкретного примера Safari не будет принимать аргумент, переданный в командной строке, такой как URL для посещения.Вам нужно использовать open /Applications/Safari.app "http://www.google.com" вместо:

var result = host.performTaskWithPathArgumentsTimeout("/usr/bin/open", ["/Applications/Safari.app", "http://www.google.com"], 30);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...