2017-09-20 9 views
0

telのスキームから電話ボタンをタップすることができるかどうか疑問に思っていました(たとえば、電話番号555555555)。私が電話ボタンをタッチすると、私は私の電話を確認したりキャンセルしたりする必要があることを警告します。出来ますか?UIテストの呼び出しボタン?

私は私のコードでこれを持っている:

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) 

任意のアイデア? よろしくお願いします。

+0

はい、あなたが呼び出すための警告コントローラを表示することができます

Xcodeの9はあなたがこれを行うことにより、「通話」ボタンをタップすることができるようにスプリングボードにアクセスできます。 –

+0

しかし、どのようにしてコールボタンを識別できますか? –

+0

ボタンのタイトルや画像とボタンの識別を比較します –

答えて

1

UIInteractionMonitorは、電話システムのダイアログの場合は機能しません。電話のダイアログはスプリングボードで処理され、アプリは処理されません。

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() 

} 
+0

こんにちは@joern、私は中断モニタを呼び出そうとしましたが、呼び出すことができませんでした。その理由について、あなたは考えていますか? –

+0

電話ボタンをタップする前に、テストの最初にモニタを追加しましたか?そして、モニターを追加した直後に 'app.tap()'を呼びますか?上記の – joern

+0

私はテストのために私のコードを入れました。しかし、それでも動作しません。その理由がありますか? –

関連する問題