在位于 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)
}
}
}
我目前正在使用 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)
}
}
}