web-dev-qa-db-ja.com

XCUIElementの値を取得する方法は?

XCODE7UITestingでtextfieldの値を取得するにはどうすればよいですか?

var b = XCUIApplication().childrenMatchingType(.textField).elementBoundByIndex(0).stringValue
8
Nikhil Kumar

次のようなテキストフィールドがあるとします。

enter image description here

(例として、その値( "My Text")をハードコーディングしています。)

アクセシビリティラベルを付けます。この場合、「テキストフィールド」ラベルを付けています。

その値にアクセスするには、次のようにします。

func testExample() {

    let app = XCUIApplication()        
    let textField = app.textFields["Text Field"]
    XCTAssertTrue(textField.value as! String == "My Text")

    // So basically "textField.value"
}

ちなみに、特定のXCUIElementの特定のプロパティにアクセスする方法がわからない場合は、「 debugDescription "が非常に役立つことがわかりました。

たとえば、プロパティ宣言の後にブレークポイントを設定し、テストを実行し、アプリがブレークポイントで停止するのを待ち、lldbコンソールに移動し、「po propertyName.debugDescription」と入力して、出力を確認します。

enter image description here

それがお役に立てば幸いです。

10
backslash-f

アプリのナビゲーションバーに出力される文字列を取得したいとします。

enter image description here

私がしたことは、ナビゲーションバー用のXCUIElementを作成したことです。

XCUIApplication *app = [[XCUIApplication alloc] init];
XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0];

次に、navBarTitleオブジェクトの作成後にブレークポイントを設定し、デバッグコンソールを使用してnavBarTitleオブジェクトの詳細を出力しました。

print out

デバッグコンソールの出力に、key called identifierがあることがわかります。

そのオブジェクトからその文字列を抽出するために、次のメソッドを使用してNSStringオブジェクトを作成しました。

NSString *nameofuser = [navBarTitle valueForKey:@"identifier"];

XCUIElement navBarTitleを使用してから、メソッドvalueForKeyを使用しました。 valueForKeyは、キー識別子の文字列値を抽出します。

このメソッドについては、ここで読むことができます: NSKeyValueCoding

valueForKeyは、この質問への答えを解き放つための鍵です....しゃれが意図されています:)

2
Ray