使用动态标签的 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)
更改查找您的 UI 元素的查询,以通过其名称以外的方法执行此操作。 Xcode 中的 UI 测试记录功能可以帮助您解决这个问题——请参阅 WWDC2015 session introducing UI testing 中的示例。
一旦您找到 UI 元素而不使用它的名称,您的期望测试就可以使用一个谓词来测试子字符串的名称。
或:
- 明确使用查询来查找
app
的与谓词匹配的子元素(参见 XCUIElementQuery
中的 elementMatchingPredicate
)而不是下标,然后您可以使用 exists
测试以验证它在那里。同样,请参阅 WWDC session 示例。
我试图断言标签(动态填充)的值包含一个子字符串作为 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)
更改查找您的 UI 元素的查询,以通过其名称以外的方法执行此操作。 Xcode 中的 UI 测试记录功能可以帮助您解决这个问题——请参阅 WWDC2015 session introducing UI testing 中的示例。
一旦您找到 UI 元素而不使用它的名称,您的期望测试就可以使用一个谓词来测试子字符串的名称。
或:
- 明确使用查询来查找
app
的与谓词匹配的子元素(参见XCUIElementQuery
中的elementMatchingPredicate
)而不是下标,然后您可以使用exists
测试以验证它在那里。同样,请参阅 WWDC session 示例。