我跟着这个网站开始使用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。
在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自动化亚军脚本,可以很好地表现的Xcode 6.0.1和模拟器。
这为我工作。
我做了ps
命令来查看哪些进程正在运行。 我发现,仪器仍在运行。 然后我做了killall instruments
和杀害仪器过程。 然后我做了我的仪器命令,它的工作之后完美。
我建议你看一看乔纳森的屏幕射手,他解释有关: http://cocoamanifest.net/articles/2013/01/ui-screen-shooter.html 。 这真的帮助我了解了很多关于模拟器,运行在命令行和更多的乐器。 像乔纳森解释,你首先需要构建应用程序,有东西跑。
在这里得到他的消息来源: https://github.com/jonathanpenn/ui-screen-shooter ,看看是否适合你。 然后你的工作方式回到一个简单的脚本,将构建应用程序,把它放在一个方便的位置和运行使用的应用程序和所需的模板工具。
试试这个
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
而不是应用程序的名称,你应该给你的应用程序的完整路径。
我有同样的问题,我做了以下修改和工作对我罚款:
改变-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