这是我的代码 - > https://github.com/patchthecode/XCTestBug
这是我的观点 - >
我正在尝试捕捉灰色视图。
它包含标签Ll
和按钮11
此代码捕获视图
let p1 = NSPredicate(format: "label LIKE[c] %@","L1")
let views = app.otherElements.containing(p1)
此代码也正确捕获视图
let p2 = NSPredicate(format: "label LIKE[c] %@","11")
let views = app.otherElements.containing(p2)
但是这段代码无法捕获任何内容
let p1 = NSPredicate(format: "label LIKE[c] %@","L1")
let p2 = NSPredicate(format: "label LIKE[c] %@","11")
let comp = NSCompoundPredicate(andPredicateWithSubpredicates: [p1, p2])
let views = app.otherElements.containing(comp)
我做错了什么?
答案 0 :(得分:0)
即使comp
谓词可行,也不会捕获灰色视图。它将捕获包含" L1"的所有元素。和" 11"元件。在你的情况下,它捕获了2个元素:ViewController
的视图和灰色视图(因为它们都包含" L1"以及" 11"所以这不是捕捉灰色视图的正确方法。
捕获灰色视图最简单的部分是向其添加辅助功能标识符(并为该UIView
启用辅助功能)。然后,您可以使用以下方法轻松查询灰色框:
let grayBox = app.otherElements.matching(identifier: "grayBox").element(boundBy: 0)
您的NSCompoundPredicate
解决方案不起作用,因为查询正在查找包含 ONE 标签的元素,其中包含文字" L1" AND " 11"。而且因为UILabel只能有一个文本,所以总是失败。