如何通过Swift中的部分标签文本找到XCUIElement搜索?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Swift中的部分标签文本找到XCUIElement搜索?相关的知识,希望对你有一定的参考价值。

我一直在使用这种方法找到XCUIElements:

app.staticTexts["Full Label Text"]

但是,如果我只知道标签文本的一部分呢?部分标签文本是动态生成的(例如“Item#1”,“Item#2”等),所以我想通过查找包含部分文本的元素来搜索它(例如,通过“Item”搜索)。在Swift中有什么方法可以做到这一点吗?

答案

您可以找到带谓词的元素。使用containing(_ predicate: NSPredicate) -> XCUIElementQuery中的XCUIElementQuery方法。

let predicate = NSPredicate(format: "label CONTAINS[c] 'Item'")
let labels = XCUIApplication().staticTexts.containing(predicate)
另一答案

要遵循最佳做法,您应在包含项目的标签上设置辅助功能标识符,并使用它标识这些单元格。

// app code
let label = UILabel!
label.text = "Item 1" // Set text for label(s)
if label.text.contains("Item") {
    label.accessibilityIdentifier = "itemLabel"
}

// test code
let app = XCUIApplication()
let itemTexts = app.staticTexts.matching(identifier: "itemLabel")

优选地,识别包含“项目”的文本的逻辑应该在应用程序侧。但是,如果无法做到这一点,您可以在测试中进行过滤。

let app = XCUIApplication()
let texts = app.staticTexts
var items: [XCUIElement] = []
for i in 0..<texts.count {
    let textElement = texts.element(boundBy: i)
    if textElement.label.contains("Item") {
        items.append(textElement)
    }
}
for item in items {
    // do something with each item text
}

以上是关于如何通过Swift中的部分标签文本找到XCUIElement搜索?的主要内容,如果未能解决你的问题,请参考以下文章

通过触摸按钮 Swift 3 更改 UIButton 文本标签颜色

IOS swift如何在标签点击时在TableView中获取标签文本

如何将位于 UI View 中的长文本标签制作成 Swift 中的多行?

如何在 swift 中更改 tableView 部分中的文本颜色

Swift中基于标签文本长度的动态自定义UITableViewCell的高度

不同部分的集合视图标题中的重叠文本