当我使用以下代码运行测试时:
let shuffle = app.buttons.elementMatchingPredicate(NSPredicate(format: "accessibilityIdentifier=%@", "shuffle"))
expectationForPredicate(NSPredicate(format: "hittable=TRUE"), evaluatedWithObject: shuffle, handler: nil)
waitForExpectationsWithTimeout(2) {_ in}
shuffle.tap()
测试失败。但是当我使用这段代码时:
let shuffle = app.buttons["shuffle"]
expectationForPredicate(NSPredicate(format: "hittable=TRUE"), evaluatedWithObject: shuffle, handler: nil)
waitForExpectationsWithTimeout(2) {_ in}
shuffle.tap()
http://www.bricepollock.com/difference-xcode-ui-testing-ui-automation-instrument/
这家伙特别指出UIT对UIA的巨大改进是UIT使用每次使用时快速评估的查询,而不是评估一次并对结果集进行操作。这里似乎有一个糟糕的设计原则。任何人都可以解释第一个查询有什么问题吗?
expectationForPredicate(NSPredicate("ANY accessibilityIdentifier=%@"), evaluatedWithObject: app.buttons)
似乎也不起作用。是否有文档描述哪些函数是查询以及哪些是结果集?我只能在Apple的网站上找到1页描述如何使用这个新的XCUI套件,并且它在示例上受到严重限制。
答案 0 :(得分:0)
我建议观看WWDC视频: https://developer.apple.com/videos/play/wwdc2015-406/
此外,这个地方看起来有关于你将在单元测试中使用的XCUI *对象的文档: http://masilotti.com/xctest-documentation/
我没有针对某些内容失败的具体答案,因为这部分取决于您的用户界面。看起来您正在设置看起来正确的辅助功能标识符。我会像这样编写这个测试:
jQuery(window).resize(function(){location.reload();});
使用Xcode UI测试框架,通常不再需要超时。