如何通过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 部分中的文本颜色