在 UI 测试期间,如何用 Xcode 7 截取我的 UI 的屏幕截图?

How do I take screenshots of my UI with Xcode 7 during UI Testing?

所以我下载了 XCode 7 的测试版并创建了一些 UI 测试,但是我找不到如何截取我的 app/UI 屏幕截图的功能测试期间。

有人可以帮忙吗?

Facebook 的 FBSnapshotTestCase 可以作为替代解决方案:

https://github.com/facebook/ios-snapshot-test-case

UI Xcode 中的测试会在每个步骤后自动截取您的应用程序的屏幕截图。

只需转到已经 运行 的测试之一(报告导航器 > 选择一个测试),然后开始扩展您的测试。当您将鼠标悬停在步骤上时,您会在每个带有屏幕截图的步骤附近看到眼睛图标。

这是一个示例...在本例中,请注意灰色行末尾的眼睛图标。如果我点击它,我会在我的应用程序中的按钮被点击时立即看到应用程序的屏幕截图(因为步骤是 点击 "Button" 按钮)。

Facebook 的 ios-snapshot-test-case and KIF 都 运行 作为单元测试,因此与应用程序处于同一进程中。因此,他们可以直接访问视图并使用 renderView:snapshotViewAfterScreenUpdates 之类的东西。 Xcode UI 在单独的进程中测试 运行,因此无法直接访问视图。

UI Automation,Apple 现已弃用的 Javascript UI 测试库,有一个名为 captureScreenWithName.

的函数

不幸的是,新的 Xcode UI Testing 在其测试库中缺少任何类似的功能,在我看来这是一个明显的遗漏,我鼓励您为它提交一个 Radar,因为采取屏幕截图是感知差异测试的基础(听起来您正在尝试这样做)。我希望(并期待)能够在以后的 Xcode 更新中解决这个缺陷。

与此同时,有更多创造性的截屏方法。请参阅此堆栈溢出 以了解涉及在应用程序本身中截取屏幕截图然后将其发送到测试进程的解决方法。

我创建了一个工具,可以保存测试的最后 n 个屏幕截图并生成 JUnit 测试结果报告,从测试日志中解析 TestSummaries plist 文件。 https://github.com/nacuteodor/ProcessTestSummaries

也许,这对你有帮助。

如果要生成截图,也可以使用snapshot, which describes how to trigger screenshots in UI tests: https://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work

它基本上将设备旋转到 .Unknown (Source),这会触发快照而不会实际修改应用程序的状态。

将输出与生成的 plist 文件进行比较,您甚至可以正确命名屏幕截图