首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode快速UI测试比较两个屏幕截图

Xcode快速UI测试比较两个屏幕截图
EN

Stack Overflow用户
提问于 2018-08-29 14:21:25
回答 2查看 2.2K关注 0票数 3

基本上,我拥有的是一个项目列表,我可以使用一个按钮在该列表中创建一个新项目。

现在,我想测试当单击按钮时,项目是否被添加到列表中。

在为此创建测试用例时,我考虑在点击按钮之前和之后截图,并比较它们以确定是否添加了项。但现在我被困在如何比较两个截图。

PS:列表很复杂,项目可能包含不同的数据。

代码语言:javascript
复制
private func takeScreenshot() -> XCUIScreenshot{
    return XCUIScreen.main.screenshot()
}


private func testElements(){
    let app = XCUIApplication()
    app.buttons["List Items"].tap()
    app.tables["OuterTable"].cells.allElementsBoundByIndex.first?.tap()
    let createBar = app.otherElements["createBar"]
    let button = app.buttons["CreateButton"]
    let initialScreenshot = takeScreenshot()
    button.tap()
    let newScreenshot = takeScreenshot()
    //Compare initialScreenshot and new Screenshot
}

PS:列表是以自下而上的方式显示的,就像你看到聊天一样,新的项目将被添加到底部。

EN

回答 2

Stack Overflow用户

发布于 2018-11-02 18:15:47

有一个名为iOSSnapshotTestCase(FBSnapshotTestCase)的库就是这样做的。曾经是Facebook项目,现在是优步项目。

iOSSnapshotTestCase

它是设置为获取视图/视图控制器的屏幕截图,然后在随后的测试运行中,它将比较您的视图和保存的快照映像,并生成一个显示任何差异的输出映像。

我从https://www.objc.io/issues/15-testing/snapshot-testing/上读到:

它通过将视图或层和现有快照绘制到两个CGContextRefs中并与C函数memcmp()进行内存比较来进行比较。

票数 2
EN

Stack Overflow用户

发布于 2022-10-06 09:29:07

可以使用pngRepresentation属性比较屏幕截图图像的原始数据:

代码语言:javascript
复制
let expectedResult = initialScreenshot.pngRepresentation == newScreenshot.pngRepresentation

XCTAssert(expectedResult, "the screenshots don't match")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52079759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档