由于 MBProgressHud,XCUI 测试失败

XCUI Test fails due to MBProgressHud

我是 运行 视图控制器上的 XCUI 测试。每次初始化视图时,都会进行 api 调用并显示 MBProgressHud。我的测试要求搜索一个按钮并点击它,但是我无法点击,因为显示了重叠的 MBProgressHud,而且 api 没有收到显示按钮所需的响应。这导致测试失败。

我的问题是我做错了什么。

  1. 我们能否在 ui 测试中包含此类场景(例如 api 呼叫)?
  2. 如何等待 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