gpt4 book ai didi

ios - 在 XCode UI 测试中等待所有 HTTP 请求完成?

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:48 24 4
gpt4 key购买 nike

在 XCode 中测试 UI 时,有没有办法等待所有网络请求完成?

我有一个应用程序发送 HTTP 请求以从服务器获取一些数据,在 UI 测试中,我想等待检索到这些数据后再继续。目前我正在使用 sleep(1) 但这种方法似乎并不可靠。

最佳答案

最好的办法是等待某些 UI 元素出现或消失。这样想:

The framework acts like a user. It doesn't care what code is running under the hood. The only thing that matters is what is visible on the screen.

也就是说,您可以通过以下方式wait for a label titled "Go!" to appear在您的 UI 测试中。

let app = XCUIApplication()
let goLabel = self.app.staticTexts["Go!"]
XCTAssertFalse(goLabel.exists)

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

app.buttons["Ready, set..."].tap()
waitForExpectationsWithTimeout(5, handler: nil)
XCTAssert(goLabel.exists)

你也可以 extract that into a helper method .如果您使用一些 Swift 编译器魔法,您甚至可以在调用该方法的行上获取失败消息。

private fund 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)
}
}
}

关于ios - 在 XCode UI 测试中等待所有 HTTP 请求完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com