web-dev-qa-db-ja.com

Xcode 7、UIテスト:UITableViewの操作

AppleがWWDC 2015で導入したxCodeのUITestingフレームワークを使用する1つの問題に直面しています。UITableViewがあり、このテーブルには多くのセルが含まれています。また、セルタイトル付きのNSArrayがある-セルタイトルがNSArrayに含まれている場合、このセルをタップする必要があります。問題は、特定のセルのテーブルビューをスクロールできないことです。フレームワークにはテーブルビューを操作するメソッドが含まれていないため、スワイプのみジェスチャー(下、上)。

たぶん誰かがテーブルビューで特定のセルをタップする方法を知っていますか?または、特定のセルのテーブルビューをスクロールするにはどうすればよいですか?画面に表示されないセルに対してtap()メソッドを呼び出すと、何も起こりません。

前もって感謝します!

17
Aleh Sarochych

これは私のために働きました:

XCUIElementQuery *tablesQuery = self.app.tables;

XCUIElementQuery *cellQuery = [tablesQuery.cells containingType:XCUIElementTypeStaticText
                                                     identifier:@"Work"];

XCUIElementQuery* cell = [cellQuery childrenMatchingType:XCUIElementTypeStaticText];

XCUIElement* cellElement = cell.element;

[cellElement tap];

テーブルをスクロールするには、以下を使用します。

XCUIElementQuery *tablesQuery = self.app.tables;
XCUIElement* table = tablesQuery.element;
[table swipeUp];
15
Eugene Gordin

@Eugene Zhenya Gordinの回答のSwiftバージョン:Swift 4の更新

    let tablesQuery = app.tables
    let cellQuery = tablesQuery.cells.containing(.staticText, identifier: "MyCell")
    let cell = cellQuery.children(matching: .staticText)
    let cellElement = cell.element
    cellElement.tap()

    let tableElement = tablesQuery.element
    tableElement.swipeUp()
5
Santosh

最近、同様の問題に遭遇しました。あなたが試すことができるオプションは、テーブルのセルの特定のタイトルを探し、それをタップすることです、

例えば:-

XCUIApplication().tables.staticTexts["identifier"].tap()

または

XCUIApplication().tables.cells.staticTexts["identifier"].tap()

「識別子」は、タップしようとしているセルのタイトルです。

これが役に立てば幸いです!

4
Anant Goel

私はまったく同じ問題を抱えていました!

最初は、.staticTextsクエリを使用して、セルのラベルをタップしていました。ここに私のために働いた別の方法があります:

セルをインスタンス化するcellForRowAtIndexPathで、titleLabelまたは別のプロパティに応じて、それぞれに一意の識別子を付けます。

例:

cell.accessibilityIdentifier = [NSString stringWithFormat:@"myCellType%@", cell.colorIdentifier];

次に、テストクラスに戻って、次のことを試してください。

XCUIApplication *application = [XCUIApplication new];
XCUIElementQuery *tablesQuery = application.tables;
XCUIElementQuery *allCellsQuery = tablesQuery.cells;
XCUIElementQuery *specificCellQuery = [cellQuery matchingIdentifier:@"myCellTypeSaffron"];
XCUIElement *cell = specificCellQuery.element;

[cell tap];

特定のセルは、相互作用すると解決します。

お役に立てば幸いです。

3
ArielSD