我使用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函数启动哪些进程?
答案 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);