2016-06-27 3 views
2

ボタンが有効になっている場合、チェックした後にタップするにはどうすればよいですか?expectationForPredicateを使用してボタンをタップする方法

このサンプルが見つかりましたが、私の場合は機能しませんでした。ここで

Delay/Wait in a test case of Xcode UI testing

コードの一部:

let app = XCUIApplication() 
    let button = app.buttons["Tap me"] 
    let exists = NSPredicate(format: "exists == 1") 
    expectationForPredicate(exists, evaluatedWithObject: button){ 
     button.tap() 
     return true 
    } 
waitForExpectationsWithTimeout(5, handler: nil) 

が、私のテストでは、ボタンをタップすることで失敗しました。 ありがとう

+0

コードが正しいに見える、私はボタンを推測していますが存在しない/ボタンがnilであれば – Daniel

+0

あなたが確認しました見つけることができないのですか? – LoVo

+0

コンソールの:po button.enabled trueを返します。 – emoleumassi

答えて

3

コードサンプルは、ボタンが有効かどうかを確認しません。

ボタンが存在する場合、expectationForPredicateに渡されたブロックが実行されるため、ボタンが無効になっていてもボタンがタップされます。有効にされているボタンのチェック含めるに

let app = XCUIApplication() 
let button = app.buttons["Tap me"] 
let exists = NSPredicate(format: "exists == 1") 
expectationForPredicate(exists, evaluatedWithObject: button) { 
    // If the button exists, also check that it is enabled 
    if button.enabled { 
     button.tap() 
     return true 
    } else { 
     // Do not fulfill the expectation since the button is not enabled 
     return false 
    } 
} 
waitForExpectationsWithTimeout(5, handler: nil) 
関連する問題