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

时间:2015-07-15 14:52:25

标签: ios xcode xcode-ui-testing

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

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:18)

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

只需转到其中一个已经运行过的测试(Report Navigator>选择一个测试),然后开始扩展测试。当您将鼠标悬停在台阶上时,您会在每个步骤附近看到带有屏幕截图的眼睛图标。

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

enter image description here

答案 1 :(得分:3)

如果您想生成屏幕截图,还可以使用snapshot,其中介绍了如何在UI测试中触发屏幕截图:https://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work

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

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

答案 2 :(得分:1)

Facebook的ios-snapshot-test-caseKIF都作为单元测试运行,因此与应用程序处于相同的过程中。因此,他们可以直接访问视图并使用EmployeeID Department BeginDate EndDate 1 HR 01.01.2015 31.12.2015 1 ITD 01.01.2015 31.12.2015 2 MR 01.03.2014 31.12.2018 2 HR 01.06.2014 31.12.2016 renderView:之类的内容。 Xcode UI Testing在单独的进程中运行,因此无法直接访问视图。

UI自动化,Apple现已弃用的Javascript UI测试库,有一个名为captureScreenWithName的函数。

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

与此同时,还有更多创意方法可以截取屏幕截图。请参阅此堆栈溢出response以获取解决方法,包括在应用程序本身中截取屏幕截图,然后将其发送到测试过程。

答案 3 :(得分:0)

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

也许,这有助于你。

答案 4 :(得分:0)

要制作屏幕截图,您可以调用下一个方法

func makeScreenShot() {
    let screenshot = XCUIScreen.main.screenshot()
    let fullScreenshotAttachment = XCTAttachment(screenshot: screenshot)
    fullScreenshotAttachment.lifetime = .keepAlways

    add(fullScreenshotAttachment)
}

之后,您将可以查看Xcode -> Report navigator -> select your test中的屏幕截图

enter image description here

或转到

DerivedData -> ProjectName... -> Logs -> Test -> find .xcresult -> Show Package Contents -> Attachments

答案 5 :(得分:-1)

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

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