从命令行启动Instruments

时间:2013-03-14 13:21:31

标签: command-line instruments ios-ui-automation

我按照此站点开始使用UI Automation。 http://blog.manbolo.com/2012/04/08/ios-automated-tests-with-uiautomation#1.2

我正在尝试从命令行启动Instruments。不幸的是我收到了一个错误:

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。

5 个答案:

答案 0 :(得分: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和模拟器。

答案 1 :(得分:0)

我建议你看一下Jonathan的银幕射击游戏,他在上面解释:http://cocoamanifest.net/articles/2013/01/ui-screen-shooter.html。这真的帮助我理解了很多关于模拟器,从命令行运行仪器等等。就像Jonathan解释的那样,你需要先构建应用程序才能运行。

在此处获取他的来源:https://github.com/jonathanpenn/ui-screen-shooter,看看它是否适合您。然后回到一个简单的脚本,它将构建应用程序,将其放在一个方便的位置,并使用应用程序和所需的模板运行仪器。

答案 2 :(得分:0)

这对我有用。

我执行了ps命令以查看正在运行的进程。我发现仪器还在运行。然后我做了killall instruments并杀死了乐器进程。然后我做了我的乐器命令,之后它完美无缺。

答案 3 :(得分: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

而不是应用名称,您应该提供应用的完整路径。

答案 4 :(得分:0)

我遇到了同样的问题,我做了以下更改,并为我工作得很好:

在给定命令中更改了-w udid的位置,将其放在tracetemplate的路径之后和app的路径之前,即这应该就像

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