无法在 xcuitestcase 的 uitableviewcell 内的 uistackview 中找到带有图像的 uibutton

Posted

技术标签:

【中文标题】无法在 xcuitestcase 的 uitableviewcell 内的 uistackview 中找到带有图像的 uibutton【英文标题】:Unable to find uibutton with image in uistackview inside uitableviewcell in xcuitestcase 【发布时间】:2021-06-01 18:32:28 【问题描述】:

我正在为我的观点编写 ui 测试用例。我在 uistackview 中有一些图像按钮,它们本身位于 UITableview 的 uitableviewcell 中。我还为按钮设置了accessibilityIdentifier,但我仍然无法找到该按钮。以下是我在 tableviewcell 中的代码:

ctaButtonStackView.isAccessibilityElement = false
    bookFlightButton.isAccessibilityElement = true
    bookFlightButton.accessibilityIdentifier = "bookFlightButton"
    findMyTripButton.accessibilityIdentifier = "findMyTripButton"
    flightStatusButton.accessibilityIdentifier = "flightStatusButton"

以下是我在故事板中的设计:

当我尝试调试我的 uitest 案例时,我可以看到没有任何标识符的按钮,而其他字段有标识符。以下是我打印所有按钮时的响应:

Output: 
  Button, 2.0, 844.0, 82.0, 48.0, label: 'Home', Selected
  Button, 88.0, 844.0, 81.0, 48.0, label: 'Book'
  Button, 173.0, 844.0, 82.0, 48.0, label: 'Trips'
  Button, 259.0, 844.0, 81.0, 48.0, label: 'Specials'
  Button, 344.0, 844.0, 82.0, 48.0, label: 'More'
  Button, 164.0, 191.0, 100.0, 100.0
  Button, 306.7, 191.0, 100.0, 100.0
  Button, 21.3, 191.0, 100.0, 100.0
  Button, 8.0, 119.0, 412.0, 32.0
  Button, 980.0, 626.0, 280.0, 35.0, label: 'Show fares '
  Button, 1300.0, 626.0, 280.0, 35.0, label: 'Show fares '
  Button, 364.0, 323.0, 49.0, 31.0, label: 'See all'

它显示了我要为其编写测试用例但没有任何标签的按钮框架。

【问题讨论】:

【参考方案1】:

似乎按钮的superview 不是可访问性元素。

ctaButtonStackView.isAccessibilityElement = false

尝试将此值设置为true

【讨论】:

已经试过了,但还是不行 您还需要确保该按钮在 UI 测试期间可见且可启用/可点击。这个按钮或它的超级视图是否有任何机会隐藏? 没有,在测试运行的时候可以看到 @Panks,你能解决这个问题吗?如果是,你是如何解决这个问题的?只是看到嵌套stackview按钮的类似问题。

以上是关于无法在 xcuitestcase 的 uitableviewcell 内的 uistackview 中找到带有图像的 uibutton的主要内容,如果未能解决你的问题,请参考以下文章

使用 IOS9 时,无法在 UITable 的部分标题上的 UIButtons 上触发触摸事件(IOS10 很好)

操作按钮在 UITable 中不起作用

UITables 部分标题中的多行文本

UITable 视图界面构建器创建

Swift uiview 在 uitable 之上

如何在代码中使用 UItable 单元中的按钮插座