如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是不是存在?

Posted

技术标签:

【中文标题】如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是不是存在?【英文标题】:how to write UI test to test whether image existing when click the first cell in an UITableView?如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是否存在? 【发布时间】:2015-11-11 03:21:10 【问题描述】:

我的故事板中有一个UITableView。它包含 5 个表格视图单元格。 当我单击第一个单元格时,它将转到第二个 UIView 并显示相应的图像。如何对 UITest 部分进行编码以测试单击第一个单元格时图像是否显示?

【问题讨论】:

【参考方案1】:

XCode 7 有一个神奇的部分- UIRecording

先选中testCase,开始像Gif一样录制

然后你会看到,UIRecording为你创建UITest代码,在我的例子中,我得到了

  let app = XCUIApplication()
  app.tables/*@START_MENU_TOKEN@*/.staticTexts["Hello"]/*[[".cells.staticTexts[\"Hello\"]",".staticTexts[\"Hello\"]"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/.tap()
  app.otherElements.containingType(.NavigationBar, identifier:"UIView").childrenMatchingType(.Other).element.childrenMatchingType(.Other).element.childrenMatchingType(.Other).element.childrenMatchingType(.Image).element.tap()

那么,我只需要一点改变

    let app = XCUIApplication()
    app.tables.cells.elementBoundByIndex(0).tap()
    let imageView =  app.otherElements.containingType(.NavigationBar, identifier:"UIView").childrenMatchingType(.Other).element.childrenMatchingType(.Other).element.childrenMatchingType(.Other).element.childrenMatchingType(.Image)
    let count = imageView.images.count
    XCTAssert(count != 0)

所以,主要有两步

让 UIRecording 为您创建代码 做一些小改动,比如添加Assert,按索引查询等等。

然后运行

【讨论】:

以上是关于如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

在 XCTest UI 测试中单击 NSToolbarItem

如何编写单元测试以检查单击某个链接后是否显示模态

是否可以为 xcode UI 测试自动设置位置?

UI 测试标签栏控制器

我可以通过单击我的反应应用程序中的按钮来运行 React UI 自动化测试吗?

如何在UI测试中将照片添加到模拟器的相机胶卷