Swift UI 测试,如何检查单元格是不是有图像视图

Posted

技术标签:

【中文标题】Swift UI 测试,如何检查单元格是不是有图像视图【英文标题】:Swift UI test, how to check if a cell has an imageviewSwift UI 测试,如何检查单元格是否有图像视图 【发布时间】:2017-01-24 12:20:19 【问题描述】:

在 UI 测试中,我可以使用以下代码获取第一个单元格:

let app = XCUIApplication()

app.launch()

let tablesQuery = app.tables

let cell = tablesQuery.children(matching:.any).element(boundBy: 0)

如何检查该单元格是否包含 imageview ?

【问题讨论】:

【参考方案1】:
public func hasImageViewInside(_ cell: UITableViewCell) -> Bool 
    for child in cell.subviews 
        if let _ = child as? UIImageView 
            return true
        
    
    return false

【讨论】:

如果 imageView 的深度超过一个级别(它可能是)将不起作用,前提是它已正确添加到 cell.contentView @ConnorNeville 你是对的,但让它递归并不难。这个想法是一样的。 在 UI 测试中查询时您无权访问它吗?【参考方案2】:
        for viw in cell.contentView.subviews 
        if ((viw as? UIImageView) != nil) 
            print("123")
        
    

【讨论】:

【参考方案3】:

斯威夫特 5

首先在情节提要或ViewDidLoad 中为单元格的 ImageView 提供一个可访问性标识符

func testIsImageViewNil() 
    let imageView = app.images["PhotosCollectionViewController.ImageCell.ImageView"]
    XCTAssertNotNil(imageView)

【讨论】:

【参考方案4】:
  for case let imageView as UIImageView in cell.contentView.subviews  
      if imageView.tag == 1001 
         imageView.image = UIImage(named: "myCustomImage")
      
  

  //OR Altervnatively


  cell.contentView.subviews.flatMap  $0 as? UIImageView .forEach  imageView in
      if imageView.tag == 1001 
         imageView.image = UIImage(named: "myCustomImage")
      
  

【讨论】:

以上是关于Swift UI 测试,如何检查单元格是不是有图像视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xcode 7 UI 测试检查表格视图中的单元格是不是可见?

swift in UI test(测试UITableView中的单元格数)

如何检查单元格是不是已显示 Swift

如何使用 Swift 在 XCode UI 自动化中选择随机表格视图单元格

如何检查 UICollectionView 有图像

如何在 swift 中创建新闻提要 UI