在iOS UITesting中获取一个包含另一个带有静态文本的元素的元素
Posted
技术标签:
【中文标题】在iOS UITesting中获取一个包含另一个带有静态文本的元素的元素【英文标题】:Get an element that contains another element with a static text in iOS UITesting 【发布时间】:2018-02-16 15:03:19 【问题描述】:如何构建查询以通过静态文本获取包含另一个元素的元素。
示例:获取第一个包含带有文本“cool cell”标签的表格单元格
我需要它,因为我有不同的单元格,我想获得一个包含特定文本的单元格。请注意,我有兴趣获取该单元格,因为我需要确保该单元格包含其他元素。目标是确保标题为“I'm a cell”的单元格也有一个带有文本“cool”的标签
【问题讨论】:
您可能需要对视图的子视图执行循环并检查其类型,让我们说它是否包含 UITextFields 或标签或按钮或 textViews,并且它们有任何文本,将此文本和 UIObject 添加到数组中并返回。 【参考方案1】:获取第一个包含带有文本“cool cell”标签的表格单元格
怎么样:
let app = XCUIApplication()
app.cells.containing(.staticText, identifier: "cool cell")
如果这还不够,还有一个 containing
的版本需要 NSPredicate
:
func containing(_ predicate: NSPredicate) -> XCUIElementQuery
func containing(_ elementType: XCUIElement.ElementType, identifier: String?) -> XCUIElementQuery
文档:
返回一个新查询以查找包含符合规范的后代的元素”,这是您所需要的。[...]
【讨论】:
【参考方案2】:如果您对测试感兴趣 或许this library可以帮到你。
【讨论】:
感谢您的建议,但我想减少项目的依赖并使用本机测试类。【参考方案3】:如果您不想使用外部库,是否有任何东西阻止您添加新的 UI 测试目标并实现一个测试类,您可以在其中创建一个虚拟数据源并初始化一个单元格数组(由 nib 制成)和然后在那里验证它们?
【讨论】:
以上是关于在iOS UITesting中获取一个包含另一个带有静态文本的元素的元素的主要内容,如果未能解决你的问题,请参考以下文章
iOS UITesting 如何关闭弹出框(iPad 弹出框不提醒样式)
Xcode Bots 从单个 Xcode 服务器在多个 iOS 项目上运行 UITesting