11

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

有人可以帮忙吗?

4

5 回答 5

18

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

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

这是一个示例……在这种情况下,请注意灰色行末尾的眼睛图标。如果我要点击它,我会在点击我的应用程序中的按钮时看到应用程序的屏幕截图(因为步骤是Tap the "Button" Button)。

在此处输入图像描述

于 2015-07-22T22:54:01.087 回答
3

如果你想生成截图,你也可以使用snapshot,它描述了如何在 UI 测试中触发截图:https ://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work

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

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

于 2016-08-09T20:12:42.937 回答
1

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

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

不幸的是,新的 Xcode UI 测试在其测试库中缺少任何类似的功能,这对我来说似乎是一个明显的遗漏,我鼓励你提交一个雷达,因为截屏是感知差异测试的基础(听起来像你'正在尝试做)。我希望(并期望)能够在以后的 Xcode 更新中解决这个缺陷。

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

于 2016-04-13T09:00:18.580 回答
0

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

也许,这对你有帮助。

于 2016-05-24T16:11:07.487 回答
-1

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

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

于 2015-07-15T15:01:30.823 回答