提问人:Ben 提问时间:9/26/2023 最后编辑:Ben 更新时间:10/2/2023 访问量:37
如何通过标签名称从静态文本列表中筛选
How to filter from a list of static texts through the name of a label
问:
这:
let car = app.descendants(matching: .any)["car_view_81"]
返回:
↪︎Find: Elements matching predicate '"car_view_81" IN identifiers'
Output: {
StaticText, 0x153216ec0, {{167.5, 316.7}, {58.0, 19.7}}, identifier: 'car_view_81', label: 'Car'
Image, 0x153216fe0, {{60.0, 358.3}, {30.0, 30.0}}, identifier: 'car_view_81'
StaticText, 0x153217100, {{306.8, 365.6}, {22.3, 15.3}}, identifier: 'car_view_81', label: '13%'
StaticText, 0x153217220, {{59.8, 423.6}, {30.3, 15.3}}, identifier: 'car_view_81', label: 'Draw'
StaticText, 0x153217340, {{305.5, 423.6}, {25.0, 15.3}}, identifier: 'car_view_81', label: '33%'
Image, 0x153217460, {{60.0, 474.3}, {30.0, 30.0}}, identifier: 'car_view_81'
StaticText, 0x153217580, {{305.5, 481.6}, {25.0, 15.3}}, identifier: 'car_view_81', label: '54%'
}
此视图中有多个静态文本元素。
我想按标签“绘制”进行过滤,以检查此静态文本是否存在。
我试过:
car.staticTexts["Draw"].firstMatch
这似乎没有过滤。
我也尝试过谓词,但似乎也没有过滤:("label == "Draw"")
let predicate = NSPredicate(format: "label CONTAINS[c] 'Draw'")
let car_view = app.staticTexts["car_view_81"]
return car_view.staticTexts.containing(predicate).element
如何从函数返回的标识符列表中进行筛选?.descendants
非常感谢
答:
1赞
Mike Collins
9/29/2023
#1
car
以 .XCUIElementQuery
我们想在其中找到一个元素。XCUIElementQuery
car.element(...)
是一个很好的功能。
我很想调用这个函数:
func element(
matching elementType: XCUIElement.ElementType,
identifier: String?
) -> XCUIElement
但是我对 XCUITest 有点生疏,并且没有任何测试代码,所以我不知道如果标识符存在但不匹配,它是否会回退到尝试标签。
因此,我们被困在(或至少是最安全的)谓词匹配中func element(matching predicate: NSPredicate)
let car = app.descendants(matching: .any)["car_view_81"]
let drawPredicate = NSPredicate(format: "type == 'staticText' AND label == 'Draw'")
return car.element(predicate: drawPredicate)
0赞
Ben
10/2/2023
#2
app.staticTexts.matching(identifier: "car_view_81")
.containing(XCUIElement.ElementType.staticText, identifier: "Draw")
.element
解决了我的问题。
用于获取 的 然后调用过滤器来提取 “Draw” 元素。.matching
XCUIElementQuery
car_view_81
containing
评论