这是我的UI测试的概要:
func testMyUI() {
self.app = XCUIApplication()
//self.delay(forSecondsDuration: 1)
let alerts = self.app.tables.staticTexts["Alerts"]
self.waitForElement(alerts)
alerts.tap()
let customMessage = self.app.buttons["Custom Message"]
self.waitForElement(customMessage)
customMessage.tap()
<snip>
}
func waitForElement(element:XCUIElement, toBeOnScreen onScreen:Bool=true) {
var predicate:NSPredicate
if onScreen {
predicate = NSPredicate(format: "exists == true")
}
else {
predicate = NSPredicate(format: "exists != true")
}
expectationForPredicate(predicate, evaluatedWithObject: element, handler: nil)
waitForExpectationsWithTimeout(self.timeOutDuration, handler: nil)
}
当我使用带有iOS9.3的iPhone 6s模拟器,但使用iPhone 6s Plus模拟器(也是iOS9.3)时,这可以工作(测试通过),我发现有必要在self.app = XCUIApplication()
行。没有iPhone 6s Plus的延迟,第一个waitForElement
和tap
实际上并没有完成它的工作。这似乎是第一次发生太早。
我正在使用Xcode 7.3.1。
想法?