UI自动化仪器可以从命令行运行吗?

时间:2010-11-16 07:17:20

标签: iphone xcode applescript instruments ios-ui-automation

有没有办法通过终端打开UIAutomation工具?

是否可以编写AppleScript来打开Apple的UIAutomation工具并加载要测试的应用程序?

请告诉我有没有办法通过脚本或通过命令行打开UIAutomation并选择要测试的应用程序,以及选择测试脚本?

9 个答案:

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

for xcode&gt; = 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>

for xcode&gt; = 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文件的路径。对我来说,路径是

      

    / Users / fwasim / Library / Application Support / iPhone Simulator / 5.0 / Applications / AA6BA2E1-D505-4864-BECC-29ADEE28194D / name_of_application.app

    此路径可能与其他任何人不同,具体取决于您在模拟器上运行的iOS版本。还记得将此路径放在双引号中。

  3. path_to_script.js应该是保存javascript编写的自动化脚本的完整路径。还记得将此路径放在双引号中。

  4. 最后,输出结果路径是您要保存输出结果的路径。还记得将此路径放在双引号中。

  5. 这些是我一直缺少的,因此得到了上面提到的一些错误。

答案 1 :(得分:22)

通过命令行启动UIAutomation 你现在可以做到,从适用于iOS5 beta 4的XCode 4.2开始 在命令行中,您可以运行指向自动化模板的工具,并将要执行的测试脚本和结果的目标路径指定为环境变量:

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

在Apple的命令行中查看更多详细信息: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/instruments.1.html

在使用iphone iOS UIAutomation的命令行上发布Stacktrace用户的帖子 Can Instruments be used using the command line?

希望这会有所帮助 - 祝你有个美好的一天:)

答案 2 :(得分: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上找到该项目。

答案 3 :(得分:6)

我写了一个更容易使用的包装器而不是长instruments命令:https://github.com/enriquez/uiauto

要使用它,您只需执行以下操作:

  1. 在Xcode中为模拟器构建项目(即将推出设备支持)。
  2. cd到项目的.xcodeproj或.xcworkspace所在的位置。
  3. 运行uiauto exec path/to/your/script.js

答案 4 :(得分:4)

对于每个新版本的Xcode,模板路径似乎都会发生变化。查找模板路径的最佳方法之一是instruments -s命令,该命令将列出所有可用模板。

答案 5 :(得分:3)

我对这个话题也非常感兴趣。我实际发现的是reference,它表明有方法可以从终端启动具有预定义模板的仪器,应该存储结果的位置,以及应该运行它的目标设备以及其他参数。您也可以输入终端instruments来获取参数列表。

我在iPhone上以这种方式运行UI自动化是不成功的。我没有尝试过模拟器或mac app,因为我最感兴趣的是设备。我发布了一个问题here on SO,但由于没有任何回复,我认为没有多少人以这种方式使用乐器。

但是有希望让它运行,因为有his short thread on apple developer forum(你需要登录)表明它可以完成。我稍后会尝试,如果我成功,我会在这里发布解决方案。如果你能设法让它在你的方式运行请求,因为我(可能还有其他人)会感兴趣。

答案 6 :(得分:2)

有一个用于使用shell环境记录/重放UI事件的工具,并且可以使用ruby编写脚本。

交互式iPhone应用程序开发 http://github.com/wookay/libcat

答案 7 :(得分:0)

在终端仪器-s中键入此命令,在类型后输入模板路径:

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

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