2013-03-14 95 views
4

我跟隨此網站開始使用UI自動化。 http://blog.manbolo.com/2012/04/08/ios-automated-tests-with-uiautomation#1.2從命令行啓動儀器

我試圖從命令行啓動儀器。不幸的是我得到一個錯誤:

2013-03-14 14:06:36.376 instruments[17854:1207] Connection to the remote device lost while launching target. Aborting... 
2013-03-14 14:06:36.378 instruments[17854:1207] Recording cancelled : At least one target failed to launch; aborting run 
Instruments Trace Error : Failed to start trace. 

這是我用過的命令:

instruments -w {deviceId} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate {appname} -e UIASCRIPT /Path/to/Script.js

目前我使用的Xcode 4.6。

+1

是安裝在設備上的應用程序?儀器不會自動安裝在設備上(至少現在不會)。你有'{appname}'作爲參數。你不能只指定名稱。您必須指定由Xcode構建的應用程序包的完整路徑。 Instruments使用它來找出包標識符,以便知道要在設備上啓動的應用程序。 – 2013-03-14 18:58:46

+0

哦,這個腳本在我的演示應用程序可能會有所幫助:https://github.com/jonathanpenn/ScheduleDemo/blob/master/test_run.sh – 2013-03-14 18:59:05

回答

0

我建議你看看喬納森的屏幕射擊遊戲,他在下面解釋:http://cocoamanifest.net/articles/2013/01/ui-screen-shooter.html。這真的幫助我瞭解了許多關於模擬器,從命令行運行儀器等等。像喬納森解釋的那樣,你需要先構建應用程序,才能運行。

請在這裏獲取他的消息來源:https://github.com/jonathanpenn/ui-screen-shooter,看看它是否適合你。然後返回到一個簡單的腳本,該腳本將構建應用程序,將其放置在方便的位置,並使用應用程序和所需模板運行樂器。

+0

網頁已不復存在,但仍GitHub的... – Jonny 2013-06-13 07:15:47

+0

我固定的聯繫。 – Jelle 2013-06-14 21:07:47

0

這對我有用。

我做了ps命令來查看哪些進程正在運行。我發現樂器還在運行。然後,我做了killall instruments,並導致儀器過程中斷。然後,我做了我的樂器指令,並在此之後完美奏效。

0

試試這個

instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate <path to your app> -e UIASCRIPT /Users/t-rbudhbhatti/Desktop/Scripts/FT5/SearchByRoute.js -e UIARESULTSPATH /Users/t-rbudhbhatti/Desktop/Scripts/FT5/SearchByRouteResult 

,而不是應用程序的名稱,你應該給的完整路徑您的應用程序。

+0

這不會在設備正常工作,將工作只爲模擬器 – 2014-02-05 12:07:15

0

我有同樣的問題,我做了以下修改和工作對我罰款:

改變在給定的命令-w UDID的位置,把它tracetemplate的路徑之後和應用程序的路徑,即前這應該是一樣

instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate -w {deviceId} {appname} -e UIASCRIPT /Path/to/Script.js 
+0

這忽略-w參數,只是將啓動對最近使用的模擬器的硬件。 – 2014-05-14 12:43:33

5

2014年和Xcode 6.0.1,你會做這樣的事情運行在模擬器上測試UIAutomation,-w開關後命名您的模擬器:

instruments -t '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' \ 
    -w 'iPhone 5s' \ 
    '/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/' 

如果您想在您的設備上運行此功能,而不是像上面代碼段中的「iPhone 5s」一樣在模擬器上運行,那麼您需要提供設備的UDID。然後,您可以省略上面給出的漫長應用程序路徑,並提供應用程序的名稱。儀器將能夠在設備上找到它。

用我上面的例子,但被修改爲一個虛構的設備,這將是這樣的:

instruments -t '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' \ 
    -w '8532A640-A9C2-4626-A2AD-37AFFF706799' \ 
    'RoadRunnerRadar' \ 
    -e UIASCRIPT '/Users/sohail/Developer/clients/acme/roadrunnerradar/ACMERoadRunnerRadarAutomationTests/TestRunner.js' \ 
    -e UIARESULTSPATH '/Users/sohail/Developer/clients/acme/roadrunnerradar/ACMERoadRunnerRadarAutomationTests/TestResults/' 

這不是用在設備上調用驗證,所以請測試它。參數排序有一些靈活性。

我確實有一個經驗證的UI Automation Runner腳本,它對Xcode 6.0.1和模擬器非常有效。