2017-12-28 25 views
0

私は、UIビューで特定の数のセルで表ビューが満たされていることを確認しようとしています。ここに私のコードは次のとおりです。UIテストUITableViewセル数

XCUIApplication().tables.element.swipeUp() 
let count = XCUIApplication().tables.element.children(matching: .cell).count 
XCTAssert(count > 0) 

countをスワイプアップは明らかに成功満たされたテーブルビューをスクロールしていても、常に0であるため、アサートが失敗しました。私も試しました:

XCTAssert(app.tables.cells.count > 0) 

同じ結果です。私はさらに、3つの静的なセルを持つ空のプロジェクトを作成し、1つの画面にUIテストのための他の考え方を取り除きましたが、それでも常に0を返します。Xcode 9でiOS 11をテストしています。

+0

愚かな推測...セルの代わりにvisibleCellを試してみてください。 –

+0

visibleCellsは、app.tablesによって返されたXCUIElementQueryの有効なプロパティではありません。 – damjandd

+0

'let count = ...'で始まる行にブレークポイントを追加する必要があります。その後、テストを実行し、ブレークポイントがアクティブになるのを待ってから、すべての出力が表示されているボトムセクションに 'po app'と入力します。これは、そこにテーブルがあるかどうかを確認できる階層を表示する必要があります。ここで(質問を編集して)ビュー階層の結果を投稿することができます。 – lagoman

答えて

1

アクセシビリティの設定に応じて、セルがセルとして登録されるとは限りません。アクセシビリティが実際にXcode menu -> Open Developer Tool -> Accessibility Inspectorのセルを見ていることを再度確認します。 :その場合、あなたはセルをしたい場合は、

XCTAssert(app.tables.staticTexts.count > 0) 

を主張するので、tableView:cellForItemAtIndexPathのようにあなたの細胞を構成する必要があります -

それは、あなたのレイアウトコードに応じて、staticTextsの代わりcellsが何であるか、アクセシビリティ見ている可能性があります

これは、セルのサブビューのそれぞれが離散要素ではなく、ルートアクセス可能項目としてマークされます。

+0

優れたポイント。私はこれが期待どおりに動作することを確認できます。 – damjandd