54

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

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

你能告诉我有什么方法可以通过脚本或命令行打开UIAutomation并选择要测试的应用程序,以及选择测试脚本吗?

4

9 回答 9

55
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. 最后输出结果路径是您要保存输出结果的路径。还要记住将此路径放在双引号中。

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

于 2012-06-22T22:07:48.407 回答
22

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

仪器 -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 运行的帖子 可以使用命令行使用 Instruments 吗?

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

于 2011-08-10T11:51:42.637 回答
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和配套的博客文章中找到该项目。

于 2014-09-20T22:23:45.563 回答
6

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

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

  1. 在 Xcode 中为模拟器构建您的项目(设备支持即将推出)。
  2. cd 到项目的 .xcodeproj 或 .xcworkspace 所在的位置。
  3. 运行uiauto exec path/to/your/script.js
于 2013-08-17T18:28:19.970 回答
4

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

于 2013-01-10T22:29:46.543 回答
3

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

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

但是有希望让它运行,因为在苹果开发者论坛 (你需要登录)上有他的短线程表明它可以完成。我稍后会尝试,如果我成功了,我会在这里发布解决方案。如果您设法使其运行,请在此处发布您的方式,因为我(可能还有其他人)会感兴趣。

于 2011-01-21T11:15:53.753 回答
2

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

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

于 2011-03-24T14:29:09.433 回答
0

在终端仪器 -s 中键入此命令,键入后您将获得模板路径:

instruments -t <template path> <Application file path> -e UIASCRIPT <script.js> UIARESULTPATH <result_path>
于 2013-03-08T16:06:57.730 回答
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/
于 2015-12-16T08:35:02.727 回答