2017-03-27 19 views
1

내 Xamarin.iOS 응용 프로그램에 대한 UI 테스트를 작성하여 모든 tableview 요소/셀이 화면에 있는지 확인하고자합니다. app.Query (e => e.All())를 사용할 수 있지만 현재 화면에 표시된 요소 만 검색합니다. 스크롤 액션을 시작하지 않고 검색된 요소가 예상대로 있다고 주장하기 위해 모든 요소 (보기에서 숨겨진 요소 포함)를 검색하는 방법이 있습니까?Xamarin.UITest : 화면에서 숨겨진 요소 검색

모든 의견을 크게 환영합니다.

+0

사용자가보기를 스크롤하지 않는 한 가시성이 false로 설정된 항목이나 해당보기의 표시 가능 영역에 아직 표시되지 않은 항목에 대해 이야기하고 있습니까? – SushiHangover

+0

예, 사용자가 요소의 다음 "일괄 처리"로 스크롤하지 않으면 항목이 뷰의 표시 가능 영역에 아직 표시되지 않은 경우에 대해 이야기하고 있습니다. –

+0

대부분의 tableviews, listviews, recyclerviews 등은 사용자가 실제로 스크롤 할 때까지 이러한 요소를 생성하지 않습니다. 메모리 및 성능상의 이유로 리사이클 러 패턴을 사용하는 뷰의 관점에서 볼 때 화면에있는 뷰는 다시 사용되고 이러한 셀, 서브 뷰 등의 데이터 요소 만 업데이트되므로 개별 셀/서브 뷰가 업데이트됩니다 * 데이터 소스의 모든 항목에 대해 * 존재하지 않습니다. 데이터 소스의 모든 항목을 테스트하는 것은 UI 기반 테스트의 의도가 아닙니다 ... – SushiHangover

답변

1

직접 할 방법이 없지만 목록보기를 스크롤하여 더 많은 항목을 가져 오는 방법이 있지만 원래의 항목은 시각적 트리에서 제거됩니다.

테이블 뷰는 셀 재활용을 사용하므로 화면을 채울 충분한 셀만 생성합니다. 스크롤하면 상단에서 스크롤되는 셀이 '재활용'되고 새 데이터가 하단에 표시됩니다. 이것은 화면의 셀이 실제로 존재하지 않는다는 것을 의미합니다. 따라서 UI 테스트에서 액세스 할 수있는 것은 없습니다.

저는 과거에 항목을 가져 와서 일부 값을 캐싱하고, 스크롤하고, 더 많은 항목을 가져오고, 스크롤하는 등 과거에 항목의 목록을 구성하여이 작업을 수행했습니다. 그런 다음 더 이상 스크롤 할 필요가 없으면 값을 확인하십시오.

+0

답장을 보내 주셔서 감사합니다. 이것은 내가 지금까지 해왔 던 방식이었습니다. 좀 더 직접적인/더 빠른 방법이 있는지 알고 싶었습니다. 큰 목록에 비해 비효율적 인 것으로 보입니다. –

+0

이유가 설명되지 않는 이유를 설명하는 답변이 업데이트되었습니다. – JimBobBennett