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

Xcode 在位于XCTestCase的单独文件中的函数中捕获屏幕截图,xcode,xctest,xcuitest,Xcode,Xctest,Xcuitest,我目前正在使用XCuTest编写一个自动化的iOS测试。我有一个主.swift文件,测试实际上是从这个文件调用的,然后我有一个单独的.swift文件,它有一些扩展XUIElement类的函数 有没有办法在这些扩展函数中附加一个可以包含在测试结果中的屏幕截图?我似乎不明白。谢谢大家! 解释如何拍摄屏幕截图并将其附加到测试活动中。附件和活动API可以在测试中的任何位置使用,而不仅仅是在测试类中 要在xguielement扩展中仅获取当前元素的屏幕截图,只需调用screenshot(),而不必调用el

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

有没有办法在这些扩展函数中附加一个可以包含在测试结果中的屏幕截图?我似乎不明白。谢谢大家!

解释如何拍摄屏幕截图并将其附加到测试活动中。附件和活动API可以在测试中的任何位置使用,而不仅仅是在测试类中

要在
xguielement
扩展中仅获取当前元素的屏幕截图,只需调用
screenshot()
,而不必调用
element.screenshot()
。要获取整个屏幕的屏幕截图,请初始化一个新的
xgui应用程序
,然后调用
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)
        }
    }
}
解释如何截图并将其附加到测试中的活动。附件和活动API可以在测试中的任何位置使用,而不仅仅是在测试类中

要在
xguielement
扩展中仅获取当前元素的屏幕截图,只需调用
screenshot()
,而不必调用
element.screenshot()
。要获取整个屏幕的屏幕截图,请初始化一个新的
xgui应用程序
,然后调用
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)
        }
    }
}

非常感谢。我不确定初始化新的XUIApplication是否会重新启动正在测试的应用程序。不,初始化新的
XUIApplication
只会创建一个带有应用程序链接的新对象。:)非常感谢。我不确定初始化新的XUIApplication是否会重新启动正在测试的应用程序。不,初始化新的
XUIApplication
只会创建一个带有应用程序链接的新对象。:)