Как использовать функцию `perfectTaskWithPathArgumentsTimeout` класса UIAutomation?

Я автоматизирую некоторые тестовые случаи для приложения iPhone и использую класс UIAutomation. Я хочу использовать функцию performTaskWithPathArgumentsTimeout, которая, как мне кажется, запускает какой-то внешний скрипт. Но я не могу его использовать. У меня есть следующий код:

#import "revision3.js"
#import "tuneup/tuneup.js"
test("script call", function(target, app){
var target = UIATarget.localTarget();
var host = target.host();
var result = host.performTaskWithPathArgumentsTimeout("fwasim/Desktop/registration.js, ["null"], 5);

UIALogger.logDebug("exitCode: " + result.exitCode);
UIALogger.logDebug("stdout: " + result.stdout);
UIALogger.logDebug("stderr: " + result.stderr);
});

На приборной панели написано:

Ошибка: путь запуска недоступен.

Я искал в Интернете, но, похоже, очень мало ресурсов по классу UIAutomation и, в частности, по вышеуказанной функции. Может ли кто-нибудь сказать мне, что я делаю неправильно?


person Farhan Ahmed Wasim    schedule 09.05.2012    source источник


Ответы (1)


Метод performTaskWithPathArgumentsTimeout() на хосте предназначен для выполнения программ оболочки, а не JavaScript. Это сообщение об ошибке сообщает вам, что не может найти исполняемую команду по указанному вами пути.

Вот как вы можете выполнить команду с помощью этого метода:

var result = host.performTaskWithPathArgumentsTimeout("/usr/bin/whoami", [], 5);

Это выполняет команду whoami, которая находится в каталоге /usr/bin. Эта команда просто выводит имя пользователя, вошедшего в систему, которое вы можете получить с помощью result.stdout, поскольку вы уже используете его.

Я не совсем уверен, что вы пытаетесь здесь сделать. Судя по сценарию, который вы пытались выполнить (fwasim/Desktop/registration.js), вы просто пытаетесь запустить какие-то регистрационные тесты, находящиеся в другом файле? Если да, то есть более простой способ сделать это. Просто введите это:

#import "fwasim/Desktop/registration.js"

Это пытается импортировать этот файл JavaScript, как если бы он относился к каталогу исполняемого файла сценария. Вам понадобится только performTaskWithPathArgumentsTimeout(), если вы пытаетесь выполнить внешний сценарий оболочки или что-то в этом роде. Это не для выполнения JavaScript внутри UI Automation.

person Jonathan Penn    schedule 14.05.2012
comment
Спасибо за ответ. На самом деле я пытался заставить работать функцию performTaskWithPathArgumentsTimeout() и посмотреть, как она работает. Я не знал, что эту функцию можно использовать только для запуска программ оболочки, вместо этого я думал, что ее можно использовать для запуска любого фрагмента кода. Моя конечная цель состояла в том, чтобы запустить внешний скрипт из UIAutomation, который выполнял бы какое-то действие, которое требовало от меня выхода из тестируемого приложения. Например, тестовый пример требует, чтобы я добавил новый контакт в адресную книгу и проверил наличие всплывающего окна в приложении. Я хотел, чтобы сценарий делал такие вещи. - person Farhan Ahmed Wasim; 14.05.2012