【问题标题】:Can the UI Automation instrument be run from the command line?UI 自动化工具可以从命令行运行吗?
【发布时间】:2011-05-10 16:02:07
【问题描述】:

有没有办法通过终端打开UIAutomation仪器?

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

请问有什么方法可以通过脚本或者命令行打开UIAutomation并选择要测试的应用,以及选择测试脚本吗?

【问题讨论】:

  • 怎么样,自从iOS5测试版,这应该是很有可能的。

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


【解决方案1】:
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 文件的路径。对我来说,路径是

    /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. 最后输出结果路径是您要保存输出结果的路径。还记得把这个路径放在双引号中。

这些是我一直遗漏的点,因此出现了上面提到的一些错误。

【讨论】:

  • 上例中的-w参数在哪里?
  • 我做了完全相同的事情,但我有类似的错误“仪器 [2760:1207] 无法解释路径'(空)'仪器跟踪错误:开始录制时出错”但路径不为空或为空.你有什么想法吗?
  • @yucelbayram 对此有何建议无法解释路径“(空)”?
  • @FullDecent 当然,我的应用程序路径并不完全正确。真正的路径就像“/Users/MyUserName/Library/Application Support/iPhone Simulator/7.1/Applications/87F1A296-A45A-4E48-8157-0C4574DECFD6”我修复了它并开始工作。检查你的路径是否真实。
  • -w 参数在哪里??请我想在我的设备上运行它
【解决方案2】:

通过命令行启动 UIAutomation 你现在可以做,从 XCode 4.2 for iOS5 beta 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

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

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

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

【讨论】:

  • 感谢您的链接,我的脚本在 Instruments 中正常运行,但仍然无法从命令行运行。我似乎无法让它通过模拟器运行。关于传递 -w 参数的任何想法?
  • 你可能已经解决了,但是 -w 的参数应该是附加设备的 UDID
【解决方案3】:

针对 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 上找到该项目。

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 'instruments -s' 还会打印出有关设备的有用信息。
      【解决方案6】:

      我也对这个话题很感兴趣。我实际发现的是reference,它表明可以使用预定义模板、结果存储位置、运行目标设备和其他参数从终端启动仪器。您也可以只输入终端instruments 以获取参数列表。

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

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

      【讨论】:

      • 不,很遗憾。现在我只专注于我需要运行的测试,稍后(如果我有时间)我将专注于以自动化方式运行它们的方式。最坏的情况 - 我将使用 Sikuli (sikuli.org) 自动执行此操作,但这是一种解决方法,我想避免这种情况......
      • 如果这个命令行工具能正常工作,我会很高兴。我的目标是测试自动化 CI,但我什至无法在模拟器上运行它。我还尝试了随附的 Leaks.tracetemplate。模拟器出现,尝试启动应用程序但失败并出现“未知错误”。确实很郁闷。 App-File 没问题,用 Instruments-GUI 运行它可以正常工作。在 Apple 网站上似乎没有关于该命令选项的提示。也许,他们忘记了? :)
      • @Rene Berlin,。您是否面临“意外错误....”? “-[UIATarget_0x5a20d20 frontMostApp],/SourceCache/UIAutomation_Sim/UIAutomation-37/Framework/UIATargetElements.m 第 437 行出现意外错误”如果您遇到此问题,可以通过将 com.apple.Accessibility.plist 复制到 4.0 来纠正.1。将 com.apple.Accessibility.plist 复制到: Collapse ~/Library/Application Support/iPhone Simulator/4.0.1/Library/Preferences 确保此文件名中应该只有两个 Key,分别为“AccessibilityEnabled”和“ApplicationAccessibilityEnabled”。应该检查这两个键。
      • @Yoosiba,。没有冒犯,但是使用 Sikuli 来自动化 UI 自动化真的不是一个好主意。
      • 我同意这不是最好的方法,但我认为 Instruments 没有其他选择。除了训练有素的猴子来启动/停止和更改脚本。
      【解决方案7】:

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

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

      【讨论】:

      • 。当我们测试客户端应用程序时,。通常他们不希望在他们的项目文件中制作/添加任何代码。无论如何,我喜欢你对 libcat 的想法。谢谢
      【解决方案8】:

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

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

      【讨论】:

        【解决方案9】:

        在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/
        

        【讨论】:

          猜你喜欢
          • 2012-07-05
          • 2013-02-08
          • 2015-05-08
          • 2016-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-15
          • 2017-02-12
          相关资源
          最近更新 更多