2017-01-14 9 views
0

私は、tableViewと詳細vcを持つ単純なプロジェクトを持っています。 tableViewは "cell(n)"テキストのある20行を表示し、詳細ビューはセルが押されたラベルを表示します。 セルにタップを与えてアサーションしたいのですが、詳細のVCラベルのtableViewにあるテキストを取得します。だから、例えば、私は "セル3"が含まれているセル3をタップすると、私はこのテキストをハードコーディングするのではなく、このテキストを詳細vcで見つけることができると主張します。XCUITest予期しない動作

func testCanNavigateToDetailVCWithTheTextFromCell() { 
    let labelInTableView = app.staticTexts["cell 3"] 

    labelInTableView.tap() 

    let labelInDetailVC = app.staticTexts[labelInTableView.label] 
    XCTAssertTrue(labelInDetailVC.exists) 
} 

これは動作しているようです。しかし、私はこれをしたい:私はこの問題here

答えて

1

でプロジェクトを設定

func testCanNavigateToDetailVCWithTheTextFromCellV2() { 
    let cell = app.tables.element.cells.element(boundBy: 3) //Get the third cell of the unique tableView 

    cell.tap() 

    let textFromPreviousCell = cell.staticTexts.element(boundBy: 0).label //Since is a "Basic" cell it only has one label. 
    //I will also want to set an accessilibtyIdentifier to the label and access it via cell.staticTexts["id"].label 
    let labelInDetailVC = app.staticTexts[textFromPreviousCell] 
    XCTAssertTrue(labelInDetailVC.exists) 
} 

問題は、あなたがそれをタップした後、セルのテキストを取得しようとしているということです。これは、セルが画面に表示されなくなったことを意味します(新しい画面が表示されます)。行番号cell.tap()let textFromPreviousCell = cell.staticTexts.element(boundBy: 0).labelの順番を変更するだけです。以下の新しい機能をご覧ください:

func testCanNavigateToDetailVCWithTheTextFromCellV2() { 
    let cell = app.tables.element.cells.element(boundBy: 3) //Get the third cell of the unique tableView 

    let textFromPreviousCell = cell.staticTexts.element(boundBy: 0).label //Since is a "Basic" cell it only has one label. 

    cell.tap() 

    let labelInDetailVC = app.staticTexts[textFromPreviousCell] 
    XCTAssertTrue(labelInDetailVC.exists) 
}