运行 XCUITest 自动化后获取应用程序的控制台/文件日志和视频

Posted

技术标签:

【中文标题】运行 XCUITest 自动化后获取应用程序的控制台/文件日志和视频【英文标题】:Getting app's console/file logs and video after running XCUITest automation 【发布时间】:2018-08-21 14:14:54 【问题描述】:

我正在尝试为我的 ios 应用程序自动化几个流程。我正在尝试构建一些东西,它将在我的 MAC 机器上及时触发,并使用执行 xcodebuild 的 shell 脚本连接电话。

我想介绍两种情况。

1) 我想启动我的应用 N 次,按 3 个按钮打开 3 个 ViewController。我的应用程序的整个交互将生成一些日志(我可以登录到文件/控制台),我将如何从应用程序访问这些日志到启动 xcodebuild 的 shell 脚本。我已尝试但无法从外部访问设备中我的应用程序的 sharedContainer。

2) 我安装了两个应用程序。首先是我构建的应用程序,其次是我从 App Store 下载的应用程序。我想自动启动这两个应用程序并录制启动视频,然后将其保存在我的 Mac 上的某个位置。我在这里尝试实现的目的是使用启动视频比较两个应用程序的启动。

在考虑了以下问题后,我正在使用 XCUITest。

对于问题 1)我将编写一个 XCUITest,使用异步测试等待一些按钮出现然后点击它们。还没有找到一种方法来在我运行 shell 脚本的终端中获取应用程序的日志。

对于问题 2)我将编写一个 XCUITest 来启动这两个应用程序,点击主屏幕上的特定 X 和 Y 位置,然后按主页按钮。使用 XCUIDevice.sharedDevice().pressButton(XCUIDeviceButton.Home)。但是我还没想好怎么拍这个正在做的视频。

你能帮我解决这些问题吗?另外,如果我走错了方向,有人可以向我指出,我是 XCUITest 和 iOS 自动化的新手。

【问题讨论】:

【参考方案1】:

1) 对于日志我们可以使用https://github.com/ios-control/ios-deploy

2) 对于视频,我使用了 ReplayKit。 https://developer.apple.com/documentation/replaykit?language=objc

【讨论】:

以上是关于运行 XCUITest 自动化后获取应用程序的控制台/文件日志和视频的主要内容,如果未能解决你的问题,请参考以下文章

为啥 XCUITest 对 iOS 应用程序运行太慢?

在设备上运行时在我的 XCUITest 包 ID 中自动附加 .xctrunner

XCUITest - 如何在应用程序运行时禁用 Wi Fi?

XCUITest:自动接受系统警报。需要更细粒度的控制

iOS XCUITest 模拟指纹

更新到 Xcode 10 后 XCUITest 的测试目标似乎不起作用