即使谓词似乎有效,XCUItest也没有通过

时间:2017-09-29 01:16:51

标签: xcode xcuitest

这是我的代码 - > https://github.com/patchthecode/XCTestBug

这是我的观点 - >

enter image description here

我正在尝试捕捉灰色视图。 它包含标签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)

我做错了什么?

1 个答案:

答案 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只能有一个文本,所以总是失败。