所以我下载了XCode 7的测试版,并且我已经创建了一些UI测试,但我找不到在测试期间如何截取我的app / UI屏幕截图的功能。
有人可以帮忙吗?
答案 0 :(得分:18)
Xcode中的UI测试会在每个步骤后自动截取您应用的屏幕截图。
只需转到其中一个已经运行过的测试(Report Navigator>选择一个测试),然后开始扩展测试。当您将鼠标悬停在台阶上时,您会在每个步骤附近看到带有屏幕截图的眼睛图标。
这是一个例子......在这种情况下,请注意灰色行末尾的眼睛图标。如果我点击它,我会在点击我的应用程序中的按钮时看到应用程序的屏幕截图(因为步骤是点击“按钮”按钮)。
答案 1 :(得分:3)
如果您想生成屏幕截图,还可以使用snapshot,其中介绍了如何在UI测试中触发屏幕截图:https://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work
它基本上将设备旋转到.Unknown
(Source),这会触发快照而不会实际修改应用的状态。
将输出与生成的plist文件进行比较,您甚至可以正确命名屏幕截图
答案 2 :(得分:1)
Facebook的ios-snapshot-test-case和KIF都作为单元测试运行,因此与应用程序处于相同的过程中。因此,他们可以直接访问视图并使用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
中的屏幕截图
或转到
DerivedData -> ProjectName... -> Logs -> Test -> find .xcresult -> Show Package Contents -> Attachments
答案 5 :(得分:-1)
Facebook的FBSnapshotTestCase可以是替代解决方案: