【问题标题】:Call button on UI Testing?UI测试上的呼叫按钮?
【发布时间】:2017-09-25 21:17:20
【问题描述】:

我想知道是否可以从 tel 的方案中点击通话按钮(例如 tel//555555555)。因为如果我触摸通话按钮,我会收到一个提醒,我需要确认或取消通话。有可能吗?

我的代码上有这个:

addUIInterruptionMonitor(withDescription: "Phone Dialog") { (alert) -> Bool in
        let button = alert.buttons["Llamar"]
        if button.exists {
            button.tap()
            return true
        }
        return false
    }
    app.tap()
    XCTAssert(app.buttons["call_button"].exists, "No se encuentra el boton de llamar")
    app.buttons["call_button"].tap()
    sleep(2)

有什么想法吗? 问候

【问题讨论】:

  • 是的,您可以显示警报控制器进行呼叫。
  • 但是,如何识别通话按钮?
  • 比较按钮标题或图片以识别按钮
  • 好吧,我不能点击“呼叫”按钮。因为我的 UI 测试似乎只识别应用程序内的按钮,而且“呼叫”按钮似乎在我的应用程序之外。 @SaurabhJain 你有什么想法吗?

标签: ios swift xcode-ui-testing


【解决方案1】:

UIInteractionMonitor 在电话呼叫系统对话框中不起作用。电话对话由 Springboard 而非您的应用处理。

Xcode 9 允许您访问 Springboard,以便您可以通过执行以下操作点击“呼叫”按钮:

func testPhoneCall() {
    let app = XCUIApplication()
    let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")

    app.launch()
    app.buttons["call_button"].tap()

    // tap on the call button
    springboard.buttons["Llamar"].tap()

}

【讨论】:

  • 嗨@joern,我尝试调用中断监视器,但无法调用。你知道这是什么原因吗?
  • 您是否在测试开始时在点击电话按钮之前添加了显示器?您是在添加监视器后立即致电app.tap() 吗?
  • 上面我把我的代码用于测试。但是,它仍然无法正常工作。你有原因吗?
  • 你是对的。在这种情况下,监视器不起作用。由于一些奇怪的巧合,它只是在我的情况下起作用 ;-) 我重写了答案以使其起作用。
最近更新 更多