2011-11-30 39 views
4

我使用UIAutomation來自動化iPad應用程序。我曾嘗試使用 (對象)performTaskWithPathArgumentsTimeout(路徑,指定參數時,超時)從我的腳本運行Safari.app:哪些進程可以使用performTaskWithPathArgumentsTimeout函數啓動?

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 標準輸出: 標準錯誤:

我也試着回聲推出:

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 標準輸出:你好世界 stderr:

因此,看起來像performTaskWithPathArgumentsTimeout只適用於特定的應用程序。

請幫我解答下列問題: 1. exitCode = 5是什麼意思? 2.使用performTaskWithPathArgumentsTimeout函數可以啓動哪些進程?

回答

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); 
+0

這是在設備上工作還是我們只講模擬器? – Sulthan

+0

@Sulthan,host.performTaskWithPathArgumentsTimeout在主機上運行一個任務,而不是目標。模擬器/設備不相關。 –

相關問題