可以使用performTaskWithPathArgumentsTimeout函数启动哪些进程?

时间:2011-11-30 15:04:06

标签: ios-ui-automation

我使用UIAutomation自动化iPad应用程序。我试过用 (object)performTaskWithPathArgumentsTimeout(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);

我得到了以下结果: exitCode:5 标准输出: 标准错误:

我也尝试启动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);

结果: exitCode:0 stdout:Hello World 标准错误:

因此,看起来performTaskWithPathArgumentsTimeout仅适用于特定应用程序。

您能否帮我解答以下问题: 1. exitCode = 5是什么意思? 2.可以使用performTaskWithPathArgumentsTimeout函数启动哪些进程?

1 个答案:

答案 0 :(得分:4)

1)退出代码5很可能是EIO,定义如下:输入/输出错误。您正在尝试执行“/Applications/Safari.app”,启动任务是一个目录而不是二进制文件。

2)您可以使用NSTask可以启动的performTaskWithPathArgumentsTimeout()启动任何应用程序。只要它是一个有效的可执行文件,它就可以工作。

对于您的具体示例,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);