使用动态标签的 XC UITesting

XC UITesting with Dynamic Labels

我试图断言标签(动态填充)的值包含一个子字符串作为 UITest 结果的一部分。

我的问题是 XCTAssert 似乎不允许子字符串或近似匹配(从我能找到的内容来看)。有没有人对我如何编写以下内容以找到 "hours ago" 而不是特定 "xx hours ago" 的匹配项有任何建议?

目前我只能使用精确匹配(如下所示)。

    //Set up an expectation
    let textToFind = app.staticTexts["13 hours ago"]

    let exists = NSPredicate(format: "exists == true")
    expectationForPredicate(exists, evaluatedWithObject: textToFind, handler: nil)

    //Give the app time to get network data & Update UI
    waitForExpectationsWithTimeout(5, handler: nil)

    //Assert that we get results
    XCTAssert(textToFind.exists)
  1. 更改查找您的 UI 元素的查询,以通过其名称以外的方法执行此操作。 Xcode 中的 UI 测试记录功能可以帮助您解决这个问题——请参阅 WWDC2015 session introducing UI testing 中的示例。

  2. 一旦您找到 UI 元素而不使用它的名称,您的期望测试就可以使用一个谓词来测试子字符串的名称。

或:

  1. 明确使用查询来查找 app 的与谓词匹配的子元素(参见 XCUIElementQuery 中的 elementMatchingPredicate)而不是下标,然后您可以使用 exists测试以验证它在那里。同样,请参阅 WWDC session 示例。