由于 MBProgressHud,XCUI 测试失败
XCUI Test fails due to MBProgressHud
我是 运行 视图控制器上的 XCUI 测试。每次初始化视图时,都会进行 api 调用并显示 MBProgressHud。我的测试要求搜索一个按钮并点击它,但是我无法点击,因为显示了重叠的 MBProgressHud,而且 api 没有收到显示按钮所需的响应。这导致测试失败。
我的问题是我做错了什么。
- 我们能否在 ui 测试中包含此类场景(例如 api 呼叫)?
- 如何等待 api 调用完成以继续我们的 ui 测试?
是的。我们可以在 ui 测试中包含这些场景。这是我们需要等待 ui 元素出现的函数:
func waitForElementToAppear(_ element: XCUIElement) -> XCUIElement? {
let predicate = NSPredicate(format: "exists == true")
let expectation = XCTNSPredicateExpectation(predicate: predicate,
object: element)
let result = XCTWaiter().wait(for: [expectation], timeout: 10)
if result == .completed {
return element
}
return nil
}
此函数将等待 api 调用完成并且 requires ui 元素出现。
您可以使用并且效果很好。
func waitForExistence(timeout: TimeInterval) -> Bool
https://developer.apple.com/documentation/xctest/xcuielement/2879412-waitforexistence
我是 运行 视图控制器上的 XCUI 测试。每次初始化视图时,都会进行 api 调用并显示 MBProgressHud。我的测试要求搜索一个按钮并点击它,但是我无法点击,因为显示了重叠的 MBProgressHud,而且 api 没有收到显示按钮所需的响应。这导致测试失败。
我的问题是我做错了什么。
- 我们能否在 ui 测试中包含此类场景(例如 api 呼叫)?
- 如何等待 api 调用完成以继续我们的 ui 测试?
是的。我们可以在 ui 测试中包含这些场景。这是我们需要等待 ui 元素出现的函数:
func waitForElementToAppear(_ element: XCUIElement) -> XCUIElement? {
let predicate = NSPredicate(format: "exists == true")
let expectation = XCTNSPredicateExpectation(predicate: predicate,
object: element)
let result = XCTWaiter().wait(for: [expectation], timeout: 10)
if result == .completed {
return element
}
return nil
}
此函数将等待 api 调用完成并且 requires ui 元素出现。
您可以使用并且效果很好。
func waitForExistence(timeout: TimeInterval) -> Bool
https://developer.apple.com/documentation/xctest/xcuielement/2879412-waitforexistence