私はUITableViewsで作業しています。セル内のコントロールまたは静的テキストに対応するセルを探したいと思います。Xcode UIテストで親または兄弟を検索する
さらに一般的には、特定の要素の親または兄弟を見つける良い方法は知っておくとよいでしょう。
今、私は正しいものを見つけるまで細胞をループしています。私は避けたいものです。私はapp.tables.cells.containingPredicate
を使ってみましたが、運がなかった。
let pred = NSPredicate { (element, bindings: [String : AnyObject]?) -> Bool in
return element.staticTexts["My Text"].exists
}
let cells = app.tables.cells.containingPredicate(pred)
述語ブロックに渡される要素は、staticTextsを持たないXCElementSnapshotです。
EDIT
ジェームズが正しいか、containingType:識別子:メソッドが素晴らしい作品。迅速で
、それがメソッドシグネチャ内の識別子は、要素の識別子プロパティに対応していないこの
let cell = app.tables.cells.containingType(.StaticText, identifier: "My Text")
のように見え、むしろそれは単にあなたが括弧内のテキストによって要素にアクセスする通常の方法です。 。
app.cells.staticTexts["My Text"]
が、私はまだ、なぜ 'app.cells.staticTexts [「マイテキスト」]のように混乱していませんでした'あなたのために働く。文字列 "My Text"がどのセルに属していても、アプリのアクセシビリティ階層のスナップショットはその文字列を見つけて一致させるでしょう。 'containingType:identifier:'メソッドは 'XCUIElementQuery'を作成します。これは、このクエリの' XCUIElement'が実際にあなたのアプリに存在することを意味しません。 – Citronex
app.cells.staticTexts []は静的なテキスト、つまりUILabelを返しますが、私はUITableViewCellが必要ですが、ラベルは – Alex
ではありません。私が間違っている場合は私を修正しますが、 'let cell = app.tables.cells.containingType(.StaticText、identifier:" My Text ")'を実行すると、XCUIElementではなくXCUIElementQueryが作成されます。要素のクエリを作成するだけで、存在しない可能性もあります。コンソール上で 'po app.tables.cells.containingType(.StaticText、識別子:" blah blah ")'を実行すると、オブジェクトが存在しない場合でも常にオブジェクトを返します。 XCUIElementQuery、または.existまたは.hittableメソッドであっても、要素が実際のものかどうかを調べることができます。 – Citronex