2010-11-16 117 views
53

有沒有辦法通過終端打開UIAutomation儀器?UI自動化儀器是否可以從命令行運行?

是否可以編寫AppleScript來打開Apple的UIAutomation工具並加載要測試的應用程序?

請問有沒有辦法通過腳本或通過命令行我們可以打開UIAutomation並選擇要測試的應用程序,以及選擇測試腳本?

+2

如何自iOS5的測試版,這應該是完全可能的。 – 2011-07-27 18:35:22

回答

54
instruments -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/\ 
PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \ 
<full_path_to_application> -e UIASCRIPT <path_to_script.js> \ 
-e UIARESULTSPATH <output_results_path> 

爲xcode的> = 4.5

instruments -t 
/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/\ 
AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \ 
<full_path_to_application> -e UIASCRIPT <path_to_script.js> \ 
-e UIARESULTSPATH <output_results_path> 

爲xcode的> = 6。1

instruments -w <device ID> -t \ 
/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/\ 
AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate \ 
<full_path_to_application> -e UIASCRIPT <path_to_script.js> \ 
-e UIARESULTSPATH <output_results_path> 

有一些重要的事情,雖然注意:

  1. -w參數不是必需的,除非你想你的設備上運行的腳本。如果您想在模擬器上運行腳本,只需從命令中省略此參數即可。
  2. full_path_to_application是您的模擬器創建的.app文件的路徑。對我來說,道路是

    /用戶/ fwasim /庫/應用程序支持/ iPhone模擬器/ 5.0 /應用/ AA6BA2E1-D505-4864-BECC-29ADEE28194D/name_of_application.app

    這條道路對於其他人可能會有所不同,具體取決於您在模擬器上運行的iOS版本。還請記住將此路徑放在雙引號中。

  3. path_to_script.js應該是完整的路徑,以便您的自動化腳本在JavaScript中保存。還請記住將此路徑放在雙引號中。

  4. 最後輸出結果路徑是您想要保存輸出結果的路徑。還請記住將此路徑放在雙引號中。

這些是我一直想念的點,因此得到了上面提到的一些錯誤。

+1

上面的示例中,您在哪裏有-w參數? – 2014-01-23 00:52:18

+0

我興奮地做同樣的事情,但我有這樣的錯誤「樂器[2760:1207]無法解釋路徑'(空)' 儀器跟蹤錯誤:錯誤開始錄製」但路徑不爲空或空。你有好主意嗎? – 2014-04-07 14:31:09

+0

@yucelbayram對此的任何意見無法解釋路徑'(null)'? – 2014-04-25 21:36:05

3

我也對這個話題很intrested。我居然發現這是reference這表明有辦法從預定義模板,其中結果應存放的位置,並在它應該運行的目標設備,以及其他參數,終端啓動儀器。您也可以輸入終端instruments來獲取參數列表。

我未成功,在iPhone上運行的UI自動化這種方式。我沒有嘗試模擬器或Mac應用程序,因爲我主要對設備感興趣。我發佈了一個問題here on SO,但由於缺乏任何迴應,我認爲沒有多少人以這種方式使用儀器。

但有希望得到它的運行,因爲爲t his short thread on apple developer forum(您需要登錄),該建議是可以做到的。我會在稍後嘗試,如果我能成功,我會在這裏發佈解決方案。如果你能設法使它順暢地運行,就像我(可能還有其他人)會感興趣的一樣。

+1

不錯的發現....你有沒有得到任何地方,但這? – jkp 2011-02-10 19:09:04

+0

不,不幸的是。現在我只關注測試,我將需要運行,稍後(如果我有時間的話),我將重點關注以自動方式運行它們的方式。最糟糕的情況 - 我將使用Sikuli(sikuli.org)來自動執行此操作,但它是這樣的解決方法,我想避免這種情況... – yoosiba 2011-02-11 09:15:59

+0

如果此命令行工具完全適用,我會更加自信。我的目標是測試自動化一個CI,但我甚至不能在模擬器上工作。 我也嘗試了Leaks.trace模板。模擬器出現,試圖啓動應用程序,但失敗並出現「未知錯誤」。的確非常令人沮喪。應用程序文件可以,使用Instruments-GUI運行它可以正常工作。 在Apple網站上似乎沒有提示該命令選項。也許,他們忘了呢? :) – 2011-03-10 09:13:22

2

有與shell環境記錄/重放UI事件的工具,可以書面方式腳本紅寶石。

互動的iPhone應用程序開發 http://github.com/wookay/libcat

+0

。當我們測試客戶端應用程序時,通常他們期望不向他們的proj文件製作/添加任何代碼。無論如何,我喜歡你的想法libcat。謝謝 – Vijay 2011-05-22 17:39:37

22

開始通過命令行UIAutomation 你可以現在就做,開始的XCode 4.2的iOS5測試版4 從命令行,您可以運行指着自動化模板工具,並指定作爲環境變量,您要執行的測試腳本和結果的目標路徑:

instruments -w -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/ Automation.tracetemplate -e UIASCRIPT

以上是從這個來源網址: http://dev-ios.blogspot.com/2011/07/starting-uiautomation-via-command-line.html

查看命令行的更多細節從蘋果在: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/instruments.1.html

加上從堆棧跟蹤用戶張貼在命令行與iPhone的iOS UIAutomation ​​3210

運行

希望這會有所幫助 - 祝你有美好的一天:)

+0

感謝您的鏈接,我的腳本正確運行在樂器上,但仍然無法從命令行運行。我似乎無法讓它通過模擬器運行。有關通過-w參數的任何想法? – 2011-09-08 07:52:38

+0

您可能已經完成了工作,但-w的參數應該是連接設備的UDID – Stew 2011-09-21 23:57:21

4

隨着Xcode的每個新版本模板路徑似乎都會改變。找出模板路徑的最佳方法之一是instruments -s命令,它將列出所有可用的模板。

+0

'instruments -s'也打印出有關設備的有用信息。 – 2014-11-19 19:52:48

0

類型的終端儀器此命令-s,你得到的模板路徑類型後:

instruments -t <template path> <Application file path> -e UIASCRIPT <script.js> UIARESULTPATH <result_path> 
6

不是長instruments命令,我寫了一個包裝,易於使用:https://github.com/enriquez/uiauto

要使用它,你只需要執行以下操作:

  1. 在Xcode中爲模擬器(即將推出設備支持)構建您的項目。
  2. cd到項目的.xcodeproj或.xcworkspace所在的位置。
  3. 運行uiauto exec path/to/your/script.js
8

更新和測試的Xcode 6.0.1

instruments -w 'iPhone 5s' \ 
    -t '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' \ 
    '/Users/sohail/Library/Developer/CoreSimulator/Devices/7232A640-A9D2-4626-A2AD-37AFFF706718/data/Containers/Bundle/Application/E71B915E-051D-4BEF-9083-34416D02EC91/RoadRunnerRadar.app' \ 
    -e UIASCRIPT '/Users/sohail/Developer/clients/acme/roadrunnerradar/ACMERoadRunnerRadarAutomationTests/TestRunner.js' \ 
    -e UIARESULTSPATH '/Users/sohail/Developer/clients/acme/roadrunnerradar/ACMERoadRunnerRadarAutomationTests/TestResults/' 

別人誰寫的那些一段時間沒有更新,因此沒有工作的命令行包裝的啓發(似乎很難理解,因爲我試圖復活它們),我寫了一個bash shell腳本,我相信它會更透明,更輕,因此更容易維護。

您可以在github和伴侶blog post上找到該項目。

0

做對的iOS模擬器的正確方法如下:

instruments -w 'iPhone 5s (9.1)' \ 
-t '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' \ 
'justTheNameOfYourAppDontAddExtension' \ 
-e UIASCRIPT '/Users/barry/Dropbox/Public/login.js' \ 
-e UIARESULTSPATH '/Users/barry/Dropbox/Public/ 
相關問題