XCTest - 等待谓词失败

Posted

技术标签:

【中文标题】XCTest - 等待谓词失败【英文标题】:XCTest - Waiting for predicate fails 【发布时间】:2016-10-12 23:25:48 【问题描述】:

我试图在 UI 测试期间等待一个字符串出现在导航栏中。当试图设置期望时,我得到一个“线程 1:断点 1.1”。我在这里做错了什么?

expectation(for: NSPredicate(format: "label CONTAINS 'Rent'"), 
    evaluatedWith: XCUIApplication().navigationBars.staticTexts, 
    handler: nil)
waitForExpectations(timeout: 10, handler: nil)

【问题讨论】:

你设置了断点吗?如果你这样做,请将其删除。 没有。没有设置断点。断点 1.1 通常表示一些内部异常。从那一点继续通常会提供更多信息,但在这种情况下不会。 【参考方案1】:

好的,我想通了。您需要一个元素而不是查询。所以代码应该是:

expectation(for: NSPredicate(format: "exists == 1"), 
  evaluatedWith: XCUIApplication().navigationBars.staticTexts.
  element(matching: NSPredicate(format: "label CONTAINS 'Rent'")), 
  handler: nil)
waitForExpectations(timeout: 10, handler: nil)

【讨论】:

更新为改进的匹配,因为以前并不总是正确匹配

以上是关于XCTest - 等待谓词失败的主要内容,如果未能解决你的问题,请参考以下文章

为啥“等待谓词”解决了条件变量的“丢失唤醒”?

使用 XCUIElement 上的谓词等待焦点 [重复]

Swift Quick/Nimble - 等待谓词匹配

如果 Partition 列不在 Where 谓词中,查询优化是不是会失败?

对于 CONTAINS 全文谓词,SQL Server 2008 中的逻辑短路似乎失败

谓词因从 Core Data 获取属性类型为“NSDate”对象的对象而失败