实际上在api调用之前,只有Label可以看到空文本。获得响应后,标签字符数大于零。但是在这里如何等待标签出现时字符数大于零并执行一些操作。
这是我使用的代码,但我收到谓词错误
捕获“NSUnknownKeyException”,“[< _NSCFString 0xjel990> valueForUndefinedKey:]:这不是关键字符的键值编码投诉
func testForWishListCountIsReflecting() {
let app = XCUIApplication()
app.decide()
cellTap()
app.navigationBars["MMRecoPageView"].buttons["MenuButton"].tap()
let wishListLable = app.staticTexts["WishListLabel"]
wishListLable.label.characters
let exists = NSPredicate(format: "label.characters.count > 0")
expectationForPredicate(exists, evaluatedWithObject:wishListLable, handler: nil)
waitForExpectationsWithTimeout(30, handler: nil)
let expectedValue:String = app.staticTexts["WishListLabel"].value as! String
app.buttons["Wishlist"].tap()
XCTAssertTrue(app.tables.cells.count == UInt(expectedValue))
}
答案 0 :(得分:0)
您的问题出在错误消息中。 characters
选择器无法在func testForWishListCountIsReflecting() {
// ...setup...
let wishListLabel = app.staticTexts["contents of label"]
waitForElementToAppear(wishListLabel)
}
private func waitForElementToAppear(element: XCUIElement, file: String = __FILE__, line: UInt = __LINE__) {
let existsPredicate = NSPredicate(format: "exists == true")
expectationForPredicate(existsPredicate, evaluatedWithObject: element, handler: nil)
waitForExpectationsWithTimeout(5) { (error) -> Void in
if (error != nil) {
let message = "Failed to find \(element) after 5 seconds."
self.recordFailureWithDescription(message, inFile: file, atLine: line, expected: true)
}
}
}
中使用,因为它不适用于KVO。
对于密钥{{1}}
,这不符合密码值编码
我建议采用略有不同的方法。你知道应该的实际文字是什么吗?如果是这样,您可以更改谓词以完全匹配。您可以手动删除“WishListLabel”辅助功能,并让内容自动设置。
{{1}}