[ios] Xcode 11 XCUITest 일치하는 스냅 샷을 가져 오지 못했습니다. 기본 창을 가져 오는 중 오류가 발생했습니다. kAXErrorServerNotFound

Xcode 11에서 내 앱을 빌드하고 XCUITests 제품군을 실행 한 후 다음과 같은 많은 오류가 발생합니다.

일치하는 스냅 샷을 가져 오지 못했습니다 : 주 창 kAXErrorServerNotFound를 가져 오는 중 오류가 발생했습니다.

시간 초과가 얼마나 길어 지더라도 문제가 간헐적으로 나타납니다. UI 계층 구조 스냅 샷에 문제가있는 것 같습니다. 우리의 테스트는 Xcode 10에서 일관되게 통과합니다.

Xcode를 다시 설치했습니다. 모든 시뮬레이터를 삭제했습니다. 파생 데이터를 지 웁니다. 수정 된 시간 초과. Xcode 11.1에서 Xcode 11.2.1로 업그레이드되었습니다.

감사!

 



답변

Xcode 11.3에서 간단한 UITest를 실행하는 동안 일치하는 데 문제가있었습니다. 제대로 작동 시키려면 먼저 붙여 넣어야했습니다. XCUIApplication().activate()또는 XCUIApplication().launch().


답변

Xcode 11과 동일한 문제가 발생하여 테스트를 중지 할 때 (또는 어떤 이유로 테스트가 중단 된 경우) 테스트 러너가 종료되지 않는다는 것을 깨달았습니다. 테스트를 두 번 실행하면 새로운 테스트 러너가 생성되고 그 시점에서 두 명의 러너가 동일한 응용 프로그램과 상호 작용하려고 시도하여 매우 이상한 오류가 발생했습니다.

내가 다음을 수행했음을 증명하기 위해 :

  1. 텍스트보기에 긴 텍스트를 입력하는 UI 테스트를 만들었습니다.
  2. 텍스트보기에 몇 개의 문장이있을 때 테스트를 실행하고 수동으로 테스트를 중지했습니다.
  3. 시뮬레이터에서 앱을 수동으로 열었습니다 (테스트를 실행하지 않음)
  4. 테스트가 실행되고 있지 않더라도 텍스트보기에 임의의 문자가 나타나는 것을 관찰했습니다.

해결 방법은 시뮬레이터를 종료했다가 다시 열어 모든 프로세스가 종료되도록하는 것입니다. 이것이 문제를 해결하기를 바랍니다.


답변

나는 다른 기계를 사용합니다. 구형 Mac에서는이 오류가 훨씬 더 자주 발생합니다. 내 생각에 구형 Mac에는 특정 XCUITest를 올바르게 실행하는 데 필요한 메모리가 없습니다.


답변

Xcode 11.1에서 때때로 문제를 해결합니다. UI 요소를 기다릴 때 특히 테스트 중에 웹보기가 표시되는 문제가 발생했습니다. 문제가 발생했을 때 XCUIElement.waitForExistence(timeout:)와 함께 사용 하거나 기대하고 NSPredicate(format: "exists == true")있었습니다. NSPredicate(format: "hittable == true")문제 와 함께 기대를 사용하기로 변경했을 때 사라진 것처럼 보이지만 이유를 모르겠습니다. 두 속성의 차이점은 hittable화면 요소 만 감지 exists하고 테이블보기의 화면 외부 셀과 같은 화면 외 요소는 감지한다는 것입니다.

expectation(for: NSPredicate(format: "hittable == true"), evaluateWith: element, handler: nil)
waitForExpectations(timeout: 60, handler: nil)


답변

Xcode 11에서도 비슷한 문제가 발생했습니다.

많은 페이지에서 동일한 접근성 식별자를 가질 수 있기 전에 밝혀졌습니다.

그러나 이제 새로운 모달 프레젠테이션 스타일을 사용하면 충돌을 피하기 위해 페이지 내에서 다른 식별자를 사용해야합니다.


답변