XCUIApplication 替换 UIATarget captureScreenWithName()

XCUIApplication replacements for UIATarget captureScreenWithName()

我们正在尝试从 UIAutomation 迁移到 XCUITests,并且确实使用了 captureScreenWithName() API 以编程方式生成屏幕截图。 XCUITests 中的替代品是什么? (我知道在出错的情况下会自动截屏,但我们有一个特殊的测试,它会永远循环运行并通过网络评估 QA click,tap 命令,类似于 appium-xcuitest-driver https://github.com/appium/appium-xcuitest-driver) 我是否需要像 appium 人员那样删除 private headers (XCAXClient_iOS.h) 以获得屏幕截图 API?

编辑 我将实际代码行用于接受的解决方案 https://github.com/fastlane/fastlane/blob/master/snapshot/lib/assets/SnapshotHelper.swift 只是 IOS

 XCUIDevice.sharedDevice().orientation = .Unknown

或在 objC 中

[XCUIDevice sharedDevice].orientation =UIInterfaceOrientationUnknown;

我在主机上使用一个进程在"Logs/Test/Attachments"目录中查找调用前的所有Screenshot_*.png文件,并在调用后找到新的截图作为该目录中添加的新文件。

手势(点按、滑动、滚动...)会导致屏幕截图,而且屏幕截图也经常在定位元素或评估期望时被截取。

Fastlane 的快照工具使用旋转到未知方向来触发屏幕截图事件(对应用程序没有影响):https://github.com/fastlane/fastlane/tree/master/snapshot - 如果您想控制某些屏幕截图,可以使用它.