25

我很感兴趣如何找到在我的应用程序的 UI 测试期间创建的屏幕截图的位置。我想了解 Fastlane Snapshot 是如何抓取此屏幕截图的。经过几个小时的研究,我找不到这些屏幕截图的位置。

4

3 回答 3

26

屏幕截图存储在您的派生数据文件夹中。您可以通过转到 Xcode、Window > Projects 并单击项目的派生数据路径旁边的小箭头来找到它。

从您的项目派生数据文件夹(应该是您的文件夹的名称,后面有一堆字母),转到Logs/Test.

在 Test 文件夹中将包含名称中带有 UUID 的测试摘要 .plist 文件(每个测试运行一个)和一个名为的文件夹Attachments- 屏幕截图在这里。

如果这些文件夹中的任何一个都不存在,请确保您已先运行测试。

要确定您想要的屏幕截图,您需要深入研究 *_TestSummaries.plist 文件。在 Xcode 中打开它,然后按照测试摘要找到您感兴趣的 SubActivity。有些 SubActivity 没有屏幕截图,并且会将HasScreenshotData密钥设置为NO.

当您找到带有屏幕截图数据的子活动时,将该子活动的 UUID 与文件Attachments夹中屏幕截图的文件名匹配。

我的截图位于:/Users/{username}/Library/Developer/Xcode/DerivedData/{project_name}-tywebfjsswmghapfjfbzhuazjf/Logs/Test/Attachments.

在 .plist 中,我按照以下路径查找事件的屏幕截图数据的详细信息TestableSummaries > Item 0 > Tests > Item 0 > Subtests > Item 0 > Subtests > Item 0 > ActivitySummaries > Item 1 > SubActivities > Item 0

于 2016-05-18T13:15:54.547 回答
23

在 Xcode 11 中,.xcresults 文件的内容已更改为不再包含可在 Finder 中浏览的 Attachments 文件夹。您仍然可以从测试报告中下载单个附件,如 yoAlex5 的答案所示,但要在不使用 Xcode GUI 的情况下获取附件,您必须使用 Apple 的 xcresulttool 或利用 xcresulttool 之类的第三方工具xcparse。有关更多信息,请参阅此博客文章:https ://www.chargepoint.com/engineering/xcparse/

于 2019-10-29T17:21:47.150 回答
12

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

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

    add(fullScreenshotAttachment)
}

您可以在以下位置找到屏幕截图Xcode -> Report navigator -> select your test

在此处输入图像描述

或前往

DerivedData -> ProjectName... -> Logs -> Test -> find .xcresult -> Show Package Contents -> Attachments
#For example
/Users/<mac_name>/Library/Developer/Xcode/DerivedData/<project_name>-<...>/Logs/Test/Test-<target_name>-<...>.xcresult

[Xcode 运行测试]

于 2019-05-28T15:46:00.250 回答