2016-04-22 15 views
2

UIを起動するプロジェクトでXcodeをテストするには、ロードブロックを押します。Xcode UI Testingカスタムクラスのテキストフィールドにテキストを入力する方法

UITextFieldのサブクラスで、RSCustomTextFieldと呼ばれ、UIのカスタマイズがあります。テキストフィールドとボタンを含むRSSearchHeadViewに追加されます。これは、どちらの要素も任意の子孫がキーボードフォーカスを持っているsearchField.typeText("abc")エラー表示にクラッシュしapp.otherElements["Search field"]

として

そのカスタムクラス以来app.textfields["Search field"]としてテキストフィールドを照会するので、イムことができない、それが表示されます。

要素上のtap()以降であっても。注意すべき点は、アクセシビリティ特性をサブクラスとテキストフィールドにUIAccessibilityTraitSearchFieldとして設定してみましたが、違いはありません。アプリ上でdebugDescriptionを印刷

func testSearchIcon() { 

    let searchField = app.otherElements["Search field"]  
    searchField.tap() 

    searchField.typeText("abc") 
    app.keys["delete"].tap() 

    XCTAssertFalse(searchDubizzleElement.hittable) 
} 

は、次のような出力が得られます。

Element subtree: 
→Application 0x7fc1b3f3aa00: {{0.0, 0.0}, {375.0, 667.0}}, label: 'myappname-masked' 
    Window 0x7fc1b3f439b0: Main Window, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x7fc1b3f55c20: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x7fc1b3f43440: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
      Other 0x7fc1b3f31830: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
      Other 0x7fc1b3f61ff0: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
       Other 0x7fc1b3f52820: traits: 8589934592, {{0.0, 0.0}, {375.0, 64.0}} 
       Other 0x7fc1b3f4e190: traits: 8589934592, {{0.0, 0.0}, {375.0, 64.0}} 
        Button 0x7fc1b3f3a250: traits: 8589934593, {{5.0, 20.0}, {44.0, 44.0}}, label: 'search icon right' 
        Other 0x7fc1b3f349b0: traits: 8589935616, {{15.0, 20.0}, {345.0, 39.0}}, label: 'Search field' 
        Image 0x7fc1b3f3b3b0: traits: 8589934596, {{139.0, 22.0}, {97.0, 30.0}}, identifier: 'logo' 
        Button 0x7fc1b3f537a0: traits: 8589934593, {{326.0, 20.0}, {44.0, 44.0}}, label: 'your account icon' 
       CollectionView 0x7fc1b3f32450: traits: 35192962023424, {{0.0, 64.0}, {375.0, 603.0}} 
       Cell 0x7fc1b3f1e230: traits: 8589934592, {{0.0, 64.0}, {375.0, 50.0}} 

...... 
+0

私はちょうどそれをストーリーボードに追加するUITextFieldをサブクラス化しようとしました、そして、 'debugDescription'はその要素をTextFieldに見せます。 'RSCustomTextField'は本当にUITextFieldのサブクラスですか? –

+0

"app.searchFields.element"を試しましたか? – Che

+0

@TomasCaminあなたは正しいです。ビューコントローラに直接追加されませんでした。 'RSSField'カスタムクラスのボタンを単に保持する' RSSearchHeadView'という別のカスタムビューの中にありました。私は質問を更新しました。私の悪い。どんな助け? – carbonr

答えて

0

私がするUITextFieldのカスタムサブクラスと同じエラーに遭遇しました。問題の原因は、UITextFieldにleftViewをプログラムで挿入したことが判明しました。これらのサブビュープロパティを使用すると、自動化されたUIテストのアクセシビリティアクセスが崩れてしまいます。

この問題を回避するには、UITextFieldsでleftViewまたはrightViewの使用を避けています。代わりに、私はここ(現在は二番目にupvoted)の答えの一つに記載されtextRect方法を変更することによって、目的のインデントを達成しています:Set padding for UITextField with UITextBorderStyleNone

私はあなたの問題が同じであるかどうか、あなたのコードから言うが、思考することはできません私はこの小さな発見を分かち合います。

関連する問題