如何等待标签出现,字符数大于零UI测试

时间:2016-02-29 07:52:52

标签: swift xcode-ui-testing ui-testing

实际上在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))

}

1 个答案:

答案 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}}