2016-06-27 8 views
4

Xcode UIテストで、staticTextsに文字列が含まれていることをテストするにはどうすればよいですか?staticTextsにXCTestを使用した文字列が含まれていることをテストする方法

デバッガでは、このようなものを実行して、staticTextsのすべてのコンテンツを出力できます。po app.staticTexts。しかし、文字列がすべてのコンテンツのどこにでも存在するかどうかをテストするにはどうすればよいですか?

app.staticTexts["the content of the staticText"].existsのような何かをしている各staticTextの存在を確認できますか?私はそのstaticTextの正確な内容を使用する必要があります。どのようにして、そのコンテンツの一部に過ぎない文字列だけを使うことができますか?

答えて

0

まず、アクセスする静的テキストオブジェクトのアクセシビリティ識別子を設定する必要があります。これにより、表示中の文字列を検索せずに検索することができます。

// Your app code 
label.accessibilityIdentifier = "myLabel" 

次に、あなたが表示された文字列を使用すると、表示された文字列の内容を取得するためにXCUIElementに.labelを呼び出すことによって、テストを書くことによってたい文字列であるかどうかを主張することができます。

// Find the label 
let myLabel = app.staticTexts["myLabel"] 
// Check the string displayed on the label is correct 
XCTAssertEqual("Expected string", myLabel.label) 

それを確認するには含まれてい特定の文字列はrange(of:)を使用します。指定した文字列が見つからない場合はnilが返されます。

XCTAssertNotNil(myLabel.label.range(of:"expected part")) 
+0

XCTAssertNotNil((のmyLabel.range: "期待される部分"))を見てください、これはエラーを生成します---申し訳@binsnoel、.LABELを逃し – binsnoel

+0

"XCUIElementにはメンバーの範囲を持っていません"私の答えで。更新されたスニペットで今すぐお試しください。 – Oletha

3

要素をフィルタリングするのに、NSPredicateを使用できます。

let searchText = "the content of the staticText" 
    let predicate = NSPredicate(format: "label CONTAINS[c] %@", searchText) 
    let elementQuery = app.staticTexts.containing(predicate) 
    if elementQuery.count > 0 { 
    // the element exists 
    } 

CONTAINS[c]では、大文字と小文字を区別しない検索を指定します。

はりんごPredicate Programming Guide

関連する問題