instruments命令
参数:
-w 真机或模拟器的UIID或者名称
-e UIASCRIPT 脚本路径
-e UIARESULTSPATH 执行结果的路径
-t instrument的追踪模板,其中有自动化模板,也有检测内存的模板
执行命令
模拟器:
instruments -t "/Applications/Utilities/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate" -w "iPhone 5s" "/Users/user/Library/Developer/CoreSimulator/Devices/C0E2AE19-9362-47D6-928C-A353FBE0F1B7/data/Containers/Bundle/Application/39E3F658-90CD-45D3-9EFC-1582E3AD80C0/LaShouGroup.app" -e UIASCRIPT "/Users/user/Downloads/ui-auto-monkey-master/UIAutoMonkey.js" -e UIARESULTSPATH "/Users/user/Documents/测试"
真机:
instruments -t "/Applications/Utilities/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate" -w $device_udid "Test" -e UIASCRIPT "/Users/user/Downloads/ui-auto-monkey-master/UIAutoMonkey.js" -e UIARESULTSPATH "/Users/user/Documents/测试"
模拟器上与真机上不同之处:
1、-w后面的内容不一样
2、在模拟器上,给Test.app给的是绝对路径,在真机上只需要给这个应用名就行。
遇到问题:
1、第一次的时候,没有加-w参数的时候,执行的时候,没有任何反应,不报错也没有结果输入。
2、UIASCRIPT写成了UASCRIPT之后,造成了结果执行只有1.3秒就执行完了,而且不生成结果,命令行中的内容:
Instruments Trace Complete (Duration : 1.328499s; Output : /Users/user/Downloads/ui-auto-monkey-master/instrumentscli5.trace)
后来灵机一动,打开了instrumentscli5.trace发现执行这个根本没有导入脚本,这才怀疑是没有导入真正的脚本。
扩展
UIAHost有个performTaskWithPathArgumentsTimeout方法可以用来调用,这个方法可以调用JS外部的应用,从而达到交互。例如,豆瓣或者淘宝测试都用到了这个方法,从而让服务端通过java来控制js进行自动化测试。
参考
http://stackoverflow.com/questions/15410465/start-instruments-from-the-command-line