AppleがWWDC 2015で導入したxCodeのUITesting
フレームワークを使用する1つの問題に直面しています。UITableViewがあり、このテーブルには多くのセルが含まれています。また、セルタイトル付きのNSArrayがある-セルタイトルがNSArrayに含まれている場合、このセルをタップする必要があります。問題は、特定のセルのテーブルビューをスクロールできないことです。フレームワークにはテーブルビューを操作するメソッドが含まれていないため、スワイプのみジェスチャー(下、上)。
たぶん誰かがテーブルビューで特定のセルをタップする方法を知っていますか?または、特定のセルのテーブルビューをスクロールするにはどうすればよいですか?画面に表示されないセルに対してtap()
メソッドを呼び出すと、何も起こりません。
前もって感謝します!
これは私のために働きました:
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];
@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()
最近、同様の問題に遭遇しました。あなたが試すことができるオプションは、テーブルのセルの特定のタイトルを探し、それをタップすることです、
例えば:-
XCUIApplication().tables.staticTexts["identifier"].tap()
または
XCUIApplication().tables.cells.staticTexts["identifier"].tap()
「識別子」は、タップしようとしているセルのタイトルです。
これが役に立てば幸いです!
私はまったく同じ問題を抱えていました!
最初は、.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];
特定のセルは、相互作用すると解決します。
お役に立てば幸いです。