在位于 XCTestCase 的单独文件中的函数中捕获屏幕截图

Capturing screenshot within a function located in a separate file from your XCTestCase

我目前正在使用 XCUITest 编写自动化 iOS 测试。我有主要的 .swift 文件,测试实际上是从中调用的,然后我有一个单独的 .swift 文件,它有一些我做的扩展 XCUIElement class 的函数。

有没有办法在这些扩展功能中附上截图,可以包含在测试结果中?我似乎无法弄清楚。谢谢!

Here is a post I made 解释如何截取屏幕截图并将其附加到测试中的活动。附件和 activity API 可以在您的测试中的任何地方使用,而不仅仅是在您的测试 class.

要截取 XCUIElement 扩展中的当前元素的屏幕截图,您只需调用 screenshot() 而不是在其他地方需要调用的 element.screenshot()。要获取整个屏幕的屏幕截图,请初始化一个新的 XCUIApplication 并在其上调用 screenshot()

extension XCUIElement {
     func tapTwice() {
        takeScreenshot()
        tap()
        tap()
    }
    func takeScreenshot() {
        XCTContext.runActivity(named: "Take screenshot") { activity in
            let screenshot = XCTAttachment(screenshot: screenshot())
            screenshot.lifetime = .keepAlways
            activity.add(screenshot)
        }
    }
}