【问题标题】:Where is the screenshot file from Xcode UI Test?Xcode UI Test 的截图文件在哪里?
【发布时间】:2016-09-13 23:56:48
【问题描述】:

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

【问题讨论】:

  • 小心那个文件夹!!!在持续集成系统中,它可以快速填满数百万个屏幕截图,此时你会被彻底搞砸(你会用完空间,但如果尝试rm -rf 它,祝你好运)。

标签: ios xcode-ui-testing fastlane


【解决方案1】:

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

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

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

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

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

当您找到带有屏幕截图数据的 SubActivity 时,将该 SubActivity 的 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

【讨论】:

  • @Oletha 你知道哪些活动会导致屏幕截图吗?在我看来,轻击会导致击球,但这都是反复试验。
  • @Leo 我不能 100% 确定,但大多数手势(点击、滑动、滚动...)都会导致屏幕截图,而且屏幕截图也经常在定位元素或评估预期时拍摄。 Fastlane 的快照工具使用旋转到未知方向来触发屏幕截图事件(这对应用程序没有影响):github.com/fastlane/fastlane/blob/master/snapshot/README.md - 如果您想控制某些屏幕截图,可以使用它。 :)
  • @Oletha 我已经看到了github.com/fastlane/fastlane/blob/master/snapshot/lib/assets/… 中的技巧,我只是不确定。结果我可以试着抓住它,我的测试循环继续。伟大的!您可以在stackoverflow.com/questions/39300947/… 中提及它,以便我为您提供信用。
【解决方案2】:

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

【讨论】:

  • 非常感谢。这让我发疯了。
【解决方案3】:

要截屏你可以调用下一个方法

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 run tests]

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 2014-09-26
    • 2020-03-16
    • 2018-12-05
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2014-11-04
    相关资源
    最近更新 更多