在位于 XCTestCase 的单独文件中的函数中捕获屏幕截图
Posted
技术标签:
【中文标题】在位于 XCTestCase 的单独文件中的函数中捕获屏幕截图【英文标题】:Capturing screenshot within a function located in a separate file from your XCTestCase 【发布时间】:2018-08-23 21:33:14 【问题描述】:我目前正在使用 XCUITest 编写自动化 ios 测试。我有一个实际调用测试的主 .swift 文件,然后我有一个单独的 .swift 文件,其中包含一些我创建的扩展 XCUIElement 类的函数。
有没有办法在这些扩展功能中附上截图,可以包含在测试结果中?我似乎无法弄清楚。谢谢!
【问题讨论】:
【参考方案1】:Here is a post I made 解释如何截取屏幕截图并将其附加到测试中的活动中。附件和活动 API 可以在您的测试中的任何地方使用,而不仅仅是在您的测试类中。
要仅截取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)
【讨论】:
谢谢!我不确定初始化一个新的 XCUIApplication 是否会重新启动被测应用程序。 不,初始化一个新的XCUIApplication
只是创建一个带有应用链接的新对象。 :)以上是关于在位于 XCTestCase 的单独文件中的函数中捕获屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 url 将数据从 python 文件发送到位于单独项目中的 html 文件(没有 html 作为模板)