2017-12-28 8 views
0

UI 뷰 테스트에서 특정 수의 셀로 테이블보기가 채워져 있는지 확인하려고합니다. 슬쩍 위로 스크롤 분명히 성공적으로 테이블보기를 작성에도 count는 항상 0이므로UI 테스트 UITableView 셀 수

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

어설 션이 실패 : 여기 내 코드입니다. 나는 또한 시도했다 :

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

같은 결과가 있습니다. UI 테스트를위한 다른 산만 함을 없애기 위해 하나의 화면에 3 개의 정적 셀이있는 테이블 뷰가있는 빈 프로젝트를 만들었고 여전히 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 무엇 접근성보고있는 가능성

cell.isAccessibilityElement = true 
cell.accessibilityLabel = cell.titleLabel.text // (for example) 
cell.accessibilityIdentifier = "MyCellId" // (or whatever you want XCUITest to identify it as) 

이렇게하면 각 셀의 하위보기가 개별 요소가 아닌 루트 액세스 가능 항목으로 표시됩니다.

+0

우수한 점. 이 작업이 예상대로 작동하는지 확인할 수 있습니다. – damjandd