4

UIAutomation を使用して、iPad アプリケーションを自動化します。(オブジェクト) 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 stdout: stderr:

また、エコーを起動しようとしました:

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 stderr:

したがって、 performTaskWithPathArgumentsTimeout は特定のアプリケーションでのみ機能するようです。

次の質問の答えを教えてください。 1. exitCode = 5 とはどういう意味ですか? 2. performTaskWithPathArgumentsTimeout 関数を使用して起動できるプロセスはどれですか?

4

1 に答える 1

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);
于 2011-12-30T22:51:08.040 に答える