2010-11-16 141 views
53

有没有办法通过终端打开UIAutomation仪器?UI自动化仪器是否可以从命令行运行?

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

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

+2

如何自iOS5的测试版,这应该是完全可能的。 – 2011-07-27 18:35:22

回答

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> 

为xcode的> = 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> 

为xcode的> = 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文件的路径。对我来说,道路是

    /用户/ fwasim /库/应用程序支持/ iPhone模拟器/ 5.0 /应用/ AA6BA2E1-D505-4864-BECC-29ADEE28194D/name_of_application.app

    这条道路对于其他人可能会有所不同,具体取决于您在模拟器上运行的iOS版本。还请记住将此路径放在双引号中。

  3. path_to_script.js应该是完整的路径,以便您的自动化脚本在JavaScript中保存。还请记住将此路径放在双引号中。

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

这些是我一直想念的点,因此得到了上面提到的一些错误。

+1

上面的示例中,您在哪里有-w参数? – 2014-01-23 00:52:18

+0

我兴奋地做同样的事情,但我有这样的错误“乐器[2760:1207]无法解释路径'(空)' 仪器跟踪错误:错误开始录制”但路径不为空或空。你有好主意吗? – 2014-04-07 14:31:09

+0

@yucelbayram对此的任何意见无法解释路径'(null)'? – 2014-04-25 21:36:05

3

我也对这个话题很intrested。我居然发现这是reference这表明有办法从预定义模板,其中结果应存放的位置,并在它应该运行的目标设备,以及其他参数,终端启动仪器。您也可以输入终端instruments来获取参数列表。

我未成功,在iPhone上运行的UI自动化这种方式。我没有尝试模拟器或Mac应用程序,因为我主要对设备感兴趣。我发布了一个问题here on SO,但由于缺乏任何回应,我认为没有多少人以这种方式使用仪器。

但有希望得到它的运行,因为为t his short thread on apple developer forum(您需要登录),该建议是可以做到的。我会在稍后尝试,如果我能成功,我会在这里发布解决方案。如果你能设法使它顺畅地运行,就像我(可能还有其他人)会感兴趣的一样。

+1

不错的发现....你有没有得到任何地方,但这? – jkp 2011-02-10 19:09:04

+0

不,不幸的是。现在我只关注测试,我将需要运行,稍后(如果我有时间的话),我将重点关注以自动方式运行它们的方式。最糟糕的情况 - 我将使用Sikuli(sikuli.org)来自动执行此操作,但它是这样的解决方法,我想避免这种情况... – yoosiba 2011-02-11 09:15:59

+0

如果此命令行工具完全适用,我会更加自信。我的目标是测试自动化一个CI,但我甚至不能在模拟器上工作。 我也尝试了Leaks.trace模板。模拟器出现,试图启动应用程序,但失败并出现“未知错误”。的确非常令人沮丧。应用程序文件可以,使用Instruments-GUI运行它可以正常工作。 在Apple网站上似乎没有提示该命令选项。也许,他们忘了呢? :) – 2011-03-10 09:13:22

2

有与shell环境记录/重放UI事件的工具,可以书面方式脚本红宝石。

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

+0

。当我们测试客户端应用程序时,通常他们期望不向他们的proj文件制作/添加任何代码。无论如何,我喜欢你的想法libcat。谢谢 – Vijay 2011-05-22 17:39:37

22

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

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

查看命令行的更多细节从苹果在: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/instruments.1.html

加上从堆栈跟踪用户张贴在命令行与iPhone的iOS UIAutomation ​​3210

运行

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

+0

感谢您的链接,我的脚本正确运行在乐器上,但仍然无法从命令行运行。我似乎无法让它通过模拟器运行。有关通过-w参数的任何想法? – 2011-09-08 07:52:38

+0

您可能已经完成了工作,但-w的参数应该是连接设备的UDID – Stew 2011-09-21 23:57:21

4

随着Xcode的每个新版本模板路径似乎都会改变。找出模板路径的最佳方法之一是instruments -s命令,它将列出所有可用的模板。

+0

'instruments -s'也打印出有关设备的有用信息。 – 2014-11-19 19:52:48

0

类型的终端仪器此命令-s,你得到的模板路径类型后:

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

不是长instruments命令,我写了一个包装,易于使用:https://github.com/enriquez/uiauto

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

  1. 在Xcode中为模拟器(即将推出设备支持)构建您的项目。
  2. cd到项目的.xcodeproj或.xcworkspace所在的位置。
  3. 运行uiauto exec path/to/your/script.js
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上找到该项目。

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/ 
相关问题